diff --git a/app/test/widget_test.dart b/app/test/widget_test.dart
index 4e2a713e053d80e7a96e9d35257d0a22c08b3c7a..7d110a79319e11900298b3b420ec702151036bdb 100644
--- a/app/test/widget_test.dart
+++ b/app/test/widget_test.dart
@@ -13,7 +13,7 @@ import 'package:app/main.dart';
 void main() {
   testWidgets('Counter increments smoke test', (WidgetTester tester) async {
     // Build our app and trigger a frame.
-    await tester.pumpWidget(const MyApp());
+    await tester.pumpWidget(const App());
 
     // Verify that our counter starts at 0.
     expect(find.text('0'), findsOneWidget);
diff --git a/flutter/.ci.yaml b/flutter/.ci.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8fb822e13d123bbc43929b485aea872f7c407053
--- /dev/null
+++ b/flutter/.ci.yaml
@@ -0,0 +1,5511 @@
+# Describes the targets run in continuous integration environment.
+#
+# Flutter infra uses this file to generate a checklist of tasks to be performed
+# for every commit.
+#
+# More information at:
+#  * https://github.com/flutter/cocoon/blob/main/CI_YAML.md
+enabled_branches:
+  - master
+  - flutter-\d+\.\d+-candidate\.\d+
+
+platform_properties:
+  staging_build_linux:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Ubuntu
+      cores: "8"
+      device_type: none
+      ignore_flakiness: "true"
+  linux:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Ubuntu
+      cores: "8"
+      device_type: none
+  linux_build_test:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Ubuntu
+      cores: "8"
+      device_type: none
+  linux_android:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Linux
+      device_type: "msm8952"
+
+  linux_pixel_7pro:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Linux
+      device_type: "Pixel 7 Pro"
+
+  linux_samsung_a02:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      os: Linux
+      device_type: "SM-A025V"
+
+  mac:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      os: Mac-12|Mac-13
+      device_type: none
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_arm64:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      os: Mac-12|Mac-13
+      device_type: none
+      cpu: arm64
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_benchmark:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      device_type: none
+      mac_model: "Macmini8,1"
+      os: Mac-12|Mac-13
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_x64:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      os: Mac-12|Mac-13
+      device_type: none
+      cpu: x86
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_build_test:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      os: Mac-12|Mac-13
+      device_type: none
+      cpu: x86
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_android:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      os: Mac-12|Mac-13
+      cpu: x86
+      device_type: "msm8952"
+  mac_arm64_android:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      os: Mac-12|Mac-13
+      cpu: arm64
+      device_type: "msm8952"
+  mac_ios:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "apple_signing", "version": "version:to_2024"}
+        ]
+      os: Mac-12|Mac-13
+      cpu: x86
+      device_os: iOS-16
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  mac_arm64_ios:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "apple_signing", "version": "none"}
+        ]
+      os: Mac-12|Mac-13
+      cpu: arm64
+      device_os: iOS-16
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14e300c"
+        }
+  windows:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "certs", "version": "version:9563bb"}
+        ]
+      os: Windows-10
+      device_type: none
+  windows_arm64:
+    properties:
+      # The arch can be removed after https://github.com/flutter/flutter/issues/135722.
+      arch: arm
+      dependencies: >-
+        [
+          {"dependency": "certs", "version": "version:9563bb"}
+        ]
+      os: Windows
+      cpu: arm64
+  windows_android:
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "certs", "version": "version:9563bb"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      os: Windows-10
+      device_type: "msm8952"
+
+targets:
+  - name: Linux analyze
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      tags: >
+        ["framework","hostonly","linux"]
+      validation: analyze
+      validation_name: Analyze
+
+  - name: Linux analyzer_benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      test_timeout_secs: "3600"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      cores: "32"
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: analyzer_benchmark
+
+  - name: Linux coverage
+    presubmit: false
+    recipe: flutter/coverage
+    timeout: 120
+    enabled_branches:
+      # Don't run this on release branches
+      - master
+    properties:
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux packages_autoroller
+    presubmit: false
+    recipe: pub_autoroller/pub_autoroller
+    timeout: 30
+    enabled_branches:
+      # Don't run this on release branches
+      - master
+    properties:
+      tags: >
+        ["framework","hostonly","linux"]
+      dependencies: >-
+        [
+          {"dependency": "gh_cli", "version": "version:2.8.0-2-g32256d38"}
+        ]
+
+  - name: Linux android views
+    recipe: flutter/android_views
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "android_virtual_device", "version": "34"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["framework","hostonly","linux"]
+    timeout: 60
+
+  - name: Linux build_tests_1_3
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"}
+        ]
+      shard: build_tests
+      subshard: "1_3"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux build_tests_2_3
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"}
+        ]
+      shard: build_tests
+      subshard: "2_3"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux build_tests_3_3
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"}
+        ]
+      shard: build_tests
+      subshard: "3_3"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux ci_yaml flutter roller
+    recipe: infra/ci_yaml
+    timeout: 30
+    properties:
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      backfill: "false"
+    runIf:
+      - .ci.yaml
+
+  - name: Linux customer_testing
+    enabled_branches:
+      - master
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      tags: >
+        ["framework", "hostonly", "linux"]
+      validation: customer_testing
+      validation_name: Customer testing
+
+  - name: Linux docs_publish
+    recipe: flutter/flutter
+    presubmit: false
+    timeout: 90 # https://github.com/flutter/flutter/issues/120901
+    dimensions:
+      os: "Linux"
+    properties:
+      cores: "32"
+      dependencies: >-
+        [
+          {"dependency": "dashing", "version": "0.4.0"},
+          {"dependency": "firebase", "version": "v11.0.1"}
+        ]
+      tags: >
+        ["framework", "hostonly", "linux"]
+      backfill: "false"
+      validation: docs
+      validation_name: Docs
+      firebase_project: master-docs-flutter-dev
+      release_ref: refs/heads/master
+      release_build: "true"
+    drone_dimensions:
+      - os=Linux
+
+  - name: Linux docs_test
+    recipe: flutter/flutter
+    timeout: 90 # https://github.com/flutter/flutter/issues/120901
+    properties:
+      cores: "32"
+      dependencies: >-
+        [
+          {"dependency": "dashing", "version": "0.4.0"}
+        ]
+      firebase_project: ""
+      release_ref: ""
+      tags: >
+        ["framework","hostonly", "linux"]
+      validation: docs
+      validation_name: Docs
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_test/**
+      - packages/flutter_drive/**
+      - packages/flutter_localizations/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux engine_dependency_proxy_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: engine_dependency_proxy_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux firebase_abstract_method_smoke_test
+    bringup: false
+    presubmit: false
+    recipe: firebaselab/firebaselab
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["firebaselab"]
+      task_name: abstract_method_smoke_test
+      physical_devices: >-
+        [
+          "--device", "model=panther,version=33",
+          "--device", "model=redfin,version=30"
+        ]
+      # TODO(flutter/flutter#123331): This device is flaking.
+      # "--device", "model=Nexus6P,version=25",
+      virtual_devices: >-
+        [
+          "--device", "model=Nexus5,version=21",
+          "--device", "model=Nexus5,version=22",
+          "--device", "model=Nexus5,version=23",
+          "--device", "model=Nexus5,version=24",
+          "--device", "model=Nexus6P,version=26",
+          "--device", "model=Nexus6P,version=27",
+          "--device", "model=NexusLowRes,version=29"
+        ]
+
+  - name: Linux firebase_android_embedding_v2_smoke_test
+    recipe: firebaselab/firebaselab
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["firebaselab"]
+      task_name: android_embedding_v2_smoke_test
+      physical_devices: >-
+        [
+          "--device", "model=redfin,version=30",
+          "--device", "model=griffin,version=24"
+        ]
+      # TODO(flutter/flutter#123331): This device is flaking.
+      # "--device", "model=Nexus6P,version=25",
+      virtual_devices: >-
+        [
+          "--device", "model=Nexus5,version=21",
+          "--device", "model=Nexus5,version=22",
+          "--device", "model=Nexus5,version=23",
+          "--device", "model=Nexus6P,version=26",
+          "--device", "model=Nexus6P,version=27",
+          "--device", "model=NexusLowRes,version=29"
+        ]
+
+  - name: Linux firebase_release_smoke_test
+    recipe: firebaselab/firebaselab
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["firebaselab"]
+      task_name: release_smoke_test
+      physical_devices: >-
+        [
+          "--device", "model=redfin,version=30",
+          "--device", "model=griffin,version=24"
+        ]
+      # TODO(flutter/flutter#123331): This device is flaking.
+      # "--device", "model=Nexus6P,version=25",
+      virtual_devices: >-
+        [
+          "--device", "model=Nexus5,version=21",
+          "--device", "model=Nexus5,version=22",
+          "--device", "model=Nexus5,version=23",
+          "--device", "model=Nexus6P,version=26",
+          "--device", "model=Nexus6P,version=27",
+          "--device", "model=NexusLowRes,version=29"
+        ]
+
+  - name: Linux flutter_packaging_test
+    recipe: packaging/packaging
+    timeout: 60
+    enabled_branches:
+      - master
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux flutter_plugins
+    recipe: flutter/flutter_drone
+    enabled_branches:
+      - master
+    timeout: 60
+    properties:
+      shard: flutter_plugins
+      subshard: analyze
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux framework_tests_libraries
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: libraries
+      tags: >
+        ["framework","hostonly","shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux framework_tests_slow
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:17"}
+        ]
+      shard: framework_tests
+      subshard: slow
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux framework_tests_misc
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "android_sdk", "version": "version:33v6"}
+        ]
+      shard: framework_tests
+      subshard: misc
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - dev/**
+      - examples/api/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux framework_tests_widgets
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: widgets
+      tags: >
+        ["framework","hostonly","shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux fuchsia_precache
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      validation: fuchsia_precache
+      validation_name: Fuchsia precache
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+
+  - name: Linux gradle_desugar_classes_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: gradle_desugar_classes_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux gradle_java8_compile_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: gradle_java8_compile_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux gradle_plugin_bundle_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: gradle_plugin_bundle_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux gradle_plugin_fat_apk_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: gradle_plugin_fat_apk_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux gradle_plugin_light_apk_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: gradle_plugin_light_apk_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux module_custom_host_app_name_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: module_custom_host_app_name_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux module_host_with_custom_build_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: module_host_with_custom_build_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux module_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: module_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux plugin_dependencies_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: plugin_dependencies_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux plugin_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: plugin_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux plugin_test_linux
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "curl", "version": "version:7.64.0"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: plugin_test_linux
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux run_debug_test_linux
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      xvfb: "1"
+      dependencies: >-
+        [
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: run_debug_test_linux
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux run_release_test_linux
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      xvfb: "1"
+      dependencies: >-
+        [
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "ninja", "version": "version:1.9.0"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: run_release_test_linux
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux skp_generator
+    enabled_branches:
+      - main
+      - master
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      shard: skp_generator
+      subshard: "0"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux technical_debt__cost
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: technical_debt__cost
+
+  - name: Linux test_ownership
+    recipe: infra/test_ownership
+    enabled_branches:
+      - main
+      - master
+    properties:
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - bin/internal/engine.version
+      - .ci.yaml
+
+  - name: Linux tool_integration_tests_1_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_integration_tests
+      subshard: "1_4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux tool_integration_tests_2_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_integration_tests
+      subshard: "2_4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux tool_integration_tests_3_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_integration_tests
+      subshard: "3_4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux tool_integration_tests_4_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "clang", "version": "git_revision:5d5aba78dbbee75508f01bcaa69aedb2ab79065a"},
+          {"dependency": "cmake", "version": "build_id:8787856497187628321"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "ninja", "version": "version:1.9.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_integration_tests
+      subshard: "4_4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux tool_tests_commands
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: commands
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux tool_tests_general
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: general
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_benchmarks_canvaskit
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"}
+        ]
+      tags: >
+        ["devicelab","hostonly", "linux"]
+      task_name: web_benchmarks_canvaskit
+
+  - name: Linux web_benchmarks_html
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"}
+        ]
+      tags: >
+        ["devicelab"]
+      task_name: web_benchmarks_html
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_benchmarks_skwasm
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"}
+        ]
+      tags: >
+        ["devicelab"]
+      task_name: web_benchmarks_skwasm
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_long_running_tests_1_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_long_running_tests
+      subshard: "1_5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_long_running_tests_2_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_long_running_tests
+      subshard: "2_5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_long_running_tests_3_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_long_running_tests
+      subshard: "3_5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_long_running_tests_4_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_long_running_tests
+      subshard: "4_5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_long_running_tests_5_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_long_running_tests
+      subshard: "5_5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_0
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "0"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_1
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "1"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_2
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "2"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_3
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "3"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "6"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tests_7_last
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tests
+      subshard: "7_last"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_0
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "0"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_1
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "1"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_2
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "2"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_3
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "3"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "4"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "5"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "6"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_canvaskit_tests_7_last
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_canvaskit_tests
+      subshard: "7_last"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux web_tool_tests
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tool_tests
+      subshard: "1_1"
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+      # Retry for flakes caused by https://github.com/flutter/flutter/issues/132654
+      presubmit_max_attempts: "2"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Linux_android android_defines_test
+    recipe: devicelab/devicelab_drone
+    presubmit: true
+    timeout: 60
+    dimensions:
+      kvm: "1"
+      cores: "8"
+      machine_type: "n1-standard-8"
+    properties:
+      device_type: "none"
+      tags: >
+        ["devicelab", "linux"]
+      task_name: android_defines_test
+      dependencies: >-
+        [
+          {"dependency": "android_virtual_device", "version": "34"}
+        ]
+
+  - name: Linux_android android_obfuscate_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_obfuscate_test
+
+  - name: Linux_android android_semantics_integration_test
+    recipe: devicelab/devicelab_drone
+    bringup: true # Flaky: https://github.com/flutter/flutter/issues/124636
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_semantics_integration_test
+
+  - name: Linux_android android_stack_size_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_stack_size_test
+
+  - name: Linux_android android_view_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_view_scroll_perf__timeline_summary
+
+  - name: Linux_android animated_image_gc_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: animated_image_gc_perf
+
+  - name: Linux_android animated_complex_opacity_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: animated_complex_opacity_perf__e2e_summary
+
+  - name: Linux_android animated_complex_image_filtered_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: animated_complex_image_filtered_perf__e2e_summary
+
+  - name: Linux_android animated_placeholder_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: animated_placeholder_perf__e2e_summary
+
+  - name: Linux_android backdrop_filter_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: backdrop_filter_perf__e2e_summary
+
+  - name: Linux_pixel_7pro backdrop_filter_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: backdrop_filter_perf__timeline_summary
+
+  - name: Linux_pixel_7pro draw_atlas_perf_opengles__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+     # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: draw_atlas_perf_opengles__timeline_summary
+
+  - name: Linux_pixel_7pro draw_atlas_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: draw_atlas_perf__timeline_summary
+
+  - name: Linux_pixel_7pro dynamic_path_tessellation_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: dynamic_path_tessellation_perf__timeline_summary
+
+  - name: Linux_pixel_7pro static_path_tessellation_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: static_path_tessellation_perf__timeline_summary
+
+  - name: Linux_pixel_7pro hello_world_impeller
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: hello_world_impeller
+
+  - name: Linux_android basic_material_app_android__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: basic_material_app_android__compile
+
+  - name: Linux_android channels_integration_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: channels_integration_test
+
+  - name: Linux_android clipper_cache_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: clipper_cache_perf__e2e_summary
+
+  - name: Linux_android color_filter_and_fade_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: color_filter_and_fade_perf__e2e_summary
+
+  - name: Linux_android color_filter_cache_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: color_filter_cache_perf__e2e_summary
+
+  - name: Linux_android color_filter_with_unstable_child_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: color_filter_with_unstable_child_perf__e2e_summary
+
+  - name: Linux_android raster_cache_use_memory_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: raster_cache_use_memory_perf__e2e_summary
+
+  - name: Linux_android shader_mask_cache_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: shader_mask_cache_perf__e2e_summary
+
+  - name: Linux_android complex_layout_android__scroll_smoothness
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: complex_layout_android__scroll_smoothness
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android complex_layout_scroll_perf__devtools_memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: complex_layout_scroll_perf__devtools_memory
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android complex_layout_scroll_perf__memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: complex_layout_scroll_perf__memory
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android complex_layout_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: complex_layout_scroll_perf__timeline_summary
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_pixel_7pro complex_layout_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: complex_layout_scroll_perf__timeline_summary
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android complex_layout_semantics_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: complex_layout_semantics_perf
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android complex_layout__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: complex_layout__start_up
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux_android cubic_bezier_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: cubic_bezier_perf__e2e_summary
+
+  - name: Linux_pixel_7pro cubic_bezier_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: cubic_bezier_perf__timeline_summary
+
+  - name: Linux_android cull_opacity_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: cull_opacity_perf__e2e_summary
+
+  - name: Linux_pixel_7pro cull_opacity_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: cull_opacity_perf__timeline_summary
+
+  - name: Linux_android devtools_profile_start_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: devtools_profile_start_test
+
+  - name: Linux_android drive_perf_debug_warning
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: drive_perf_debug_warning
+
+  - name: Linux_android embedded_android_views_integration_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: embedded_android_views_integration_test
+
+  - name: Linux_android external_ui_integration_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: external_ui_integration_test
+
+  - name: Linux_android fading_child_animation_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: fading_child_animation_perf__timeline_summary
+
+  - name: Linux_android fast_scroll_heavy_gridview__memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: fast_scroll_heavy_gridview__memory
+
+  - name: Linux_android fast_scroll_large_images__memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: fast_scroll_large_images__memory
+
+  - name: Linux_android flavors_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flavors_test
+
+  - name: Linux_android flutter_engine_group_performance
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_engine_group_performance
+
+  - name: Linux_android flutter_gallery__back_button_memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__back_button_memory
+
+  - name: Linux_android flutter_gallery__image_cache_memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__image_cache_memory
+
+  - name: Linux_android flutter_gallery__memory_nav
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab" ,"android", "linux"]
+      task_name: flutter_gallery__memory_nav
+
+  - name: Linux_android flutter_gallery__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__start_up
+
+  - name: Linux_android flutter_gallery__start_up_delayed
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__start_up_delayed
+
+  - name: Linux_android flutter_gallery_android__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery_android__compile
+
+  - name: Linux_android flutter_gallery_v2_chrome_run_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery_v2_chrome_run_test
+
+  - name: Linux flutter_gallery_v2_web_compile_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: flutter_gallery_v2_web_compile_test
+
+  - name: Linux_android flutter_test_performance
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_test_performance
+
+  - name: Linux_android flutter_view__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_view__start_up
+
+  - name: Linux_android frame_policy_delay_test_android
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: frame_policy_delay_test_android
+
+  - name: Linux_android fullscreen_textfield_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: fullscreen_textfield_perf
+
+  - name: Linux_android fullscreen_textfield_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: fullscreen_textfield_perf__e2e_summary
+
+  - name: Linux_android very_long_picture_scrolling_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 120
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: very_long_picture_scrolling_perf__e2e_summary
+
+  - name: Linux_android hello_world__memory
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: hello_world__memory
+
+  - name: Linux_android home_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: home_scroll_perf__timeline_summary
+
+  - name: Linux_android hot_mode_dev_cycle_linux__benchmark
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: hot_mode_dev_cycle_linux__benchmark
+    runIf:
+      - dev/**
+
+  - name: Linux_android hybrid_android_views_integration_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: hybrid_android_views_integration_test
+
+  - name: Linux_android image_list_jit_reported_duration
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: image_list_jit_reported_duration
+
+  - name: Linux_android imagefiltered_transform_animation_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: imagefiltered_transform_animation_perf__timeline_summary
+
+  - name: Linux_pixel_7pro imagefiltered_transform_animation_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: imagefiltered_transform_animation_perf__timeline_summary
+
+  - name: Linux_android image_list_reported_duration
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: image_list_reported_duration
+
+  - name: Linux_android integration_ui_driver
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab" ,"android", "linux"]
+      task_name: integration_ui_driver
+
+  - name: Linux_android integration_ui_keyboard_resize
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: integration_ui_keyboard_resize
+
+  - name: Linux_android integration_ui_textfield
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: integration_ui_textfield
+
+  - name: Linux_android large_image_changer_perf_android
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: large_image_changer_perf_android
+
+  - name: Linux_android linux_chrome_dev_mode
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: linux_chrome_dev_mode
+
+  - name: Linux_android multi_widget_construction_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: multi_widget_construction_perf__e2e_summary
+
+  - name: Linux_android list_text_layout_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: list_text_layout_perf__e2e_summary
+
+  - name: Linux_android list_text_layout_impeller_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: list_text_layout_impeller_perf__e2e_summary
+
+  - name: Linux_android new_gallery__crane_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: new_gallery__crane_perf
+
+  - name: Linux_android old_gallery__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: old_gallery__transition_perf
+
+  - name: Linux_build_test flutter_gallery__transition_perf
+    recipe: devicelab/devicelab_drone_build_test
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__transition_perf
+      artifact: gallery__transition_perf
+      drone_dimensions: >
+        ["device_os=N","os=Linux", "device_type=msm8952"]
+
+  - name: Linux_build_test flutter_gallery__transition_perf_e2e
+    recipe: devicelab/devicelab_drone_build_test
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__transition_perf_e2e
+      artifact: gallery__transition_perf_e2e
+      drone_dimensions: >
+        ["device_os=N","os=Linux", "device_type=msm8952"]
+
+  - name: Linux_build_test flutter_gallery__transition_perf_hybrid
+    recipe: devicelab/devicelab_drone_build_test
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__transition_perf_hybrid
+      artifact: gallery__transition_perf_hybrid
+      drone_dimensions: >
+        ["device_os=N","os=Linux", "device_type=msm8952"]
+
+  - name: Linux_android flutter_gallery__transition_perf_with_semantics
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: flutter_gallery__transition_perf_with_semantics
+
+  # MotoG4, Skia
+  - name: Linux_android new_gallery__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: new_gallery__transition_perf
+
+  # Pixel 7 Pro, Skia
+  - name: Linux_pixel_7pro new_gallery__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: new_gallery__transition_perf
+
+  # Samsung A02, Skia
+  - name: Linux_samsung_a02 new_gallery__transition_perf
+    recipe: devicelab/devicelab_drone
+    bringup: true
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "samsung", "a02"]
+      task_name: new_gallery__transition_perf
+
+  # Moto G4, Impeller (OpenGL)
+  - name: Linux_android new_gallery_impeller__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: new_gallery_impeller__transition_perf
+
+  # Pixel 7 Pro, Impeller (Vulkan)
+  - name: Linux_pixel_7pro new_gallery_impeller__transition_perf
+    recipe: devicelab/devicelab_drone
+    bringup: true
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: new_gallery_impeller__transition_perf
+
+  # Samsung A02, Impeller (OpenGL)
+  - name: Linux_samsung_a02 new_gallery_impeller__transition_perf
+    bringup: true
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "samsung", "a02"]
+      task_name: new_gallery_impeller__transition_perf
+
+  # Pixel 7 Pro, Impeller (OpenGL)
+  - name: Linux_pixel_7pro new_gallery_opengles_impeller__transition_perf
+    bringup: true
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: new_gallery_opengles_impeller__transition_perf
+
+  - name: Linux_android picture_cache_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: picture_cache_perf__e2e_summary
+
+  - name: Linux_pixel_7pro picture_cache_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: picture_cache_perf__timeline_summary
+
+  - name: Linux_android android_picture_cache_complexity_scoring_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_picture_cache_complexity_scoring_perf__timeline_summary
+
+  - name: Linux_android slider_perf_android
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: slider_perf_android
+
+  - name: Linux_android platform_channels_benchmarks
+    bringup: true # Flaky https://github.com/flutter/flutter/issues/135105
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_channels_benchmarks
+
+  - name: Linux_android platform_channel_sample_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_channel_sample_test
+
+  - name: Linux_android platform_interaction_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_interaction_test
+
+  - name: Linux_android platform_views_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_views_scroll_perf__timeline_summary
+
+  - name: Linux_pixel_7pro platform_views_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: platform_views_scroll_perf__timeline_summary
+
+  - name: Linux_android platform_views_scroll_perf_impeller__timeline_summary
+    bringup: true
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_views_scroll_perf_impeller__timeline_summary
+
+  - name: Linux_pixel_7pro platform_views_scroll_perf_impeller__timeline_summary
+    bringup: true
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: platform_views_scroll_perf_impeller__timeline_summary
+
+  - name: Linux_android platform_view__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: platform_view__start_up
+
+  - name: Linux_android routing_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: routing_test
+
+  - name: Linux_android service_extensions_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: service_extensions_test
+
+  - name: Linux_android textfield_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: textfield_perf__e2e_summary
+
+  - name: Linux_pixel_7pro textfield_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: textfield_perf__timeline_summary
+
+  - name: Linux_android tiles_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab","android","linux"]
+      task_name: tiles_scroll_perf__timeline_summary
+      dependencies: >-
+        [
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+
+  - name: Linux web_size__compile_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: web_size__compile_test
+
+  - name: Linux_android opacity_peephole_one_rect_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_one_rect_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_col_of_rows_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_col_of_rows_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_opacity_of_grid_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_opacity_of_grid_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_grid_of_opacity_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_grid_of_opacity_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_fade_transition_text_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_fade_transition_text_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_grid_of_alpha_savelayers_perf__e2e_summary
+    bringup: true # Flaky https://github.com/flutter/flutter/issues/135118
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_grid_of_alpha_savelayers_perf__e2e_summary
+
+  - name: Linux_android opacity_peephole_col_of_alpha_savelayer_rows_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: opacity_peephole_col_of_alpha_savelayer_rows_perf__e2e_summary
+
+  - name: Linux_android gradient_dynamic_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: gradient_dynamic_perf__e2e_summary
+
+  - name: Linux_android gradient_consistent_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: gradient_consistent_perf__e2e_summary
+
+  - name: Linux_android gradient_static_perf__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: gradient_static_perf__e2e_summary
+
+  - name: Linux_android android_choreographer_do_frame_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: android_choreographer_do_frame_test
+
+  - name: Linux_android animated_blur_backdrop_filter_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux"]
+      task_name: animated_blur_backdrop_filter_perf__timeline_summary
+
+  - name: Linux_pixel_7pro animated_blur_backdrop_filter_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: animated_blur_backdrop_filter_perf__timeline_summary
+
+  - name: Linux_pixel_7pro animated_advanced_blend_perf_opengles__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: animated_advanced_blend_perf_opengles__timeline_summary
+
+  - name: Linux_pixel_7pro animated_advanced_blend_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: animated_advanced_blend_perf__timeline_summary
+
+  - name: Mac_ios animated_advanced_blend_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: animated_advanced_blend_perf_ios__timeline_summary
+
+  - name: Linux_pixel_7pro animated_blur_backdrop_filter_perf_opengles__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: animated_blur_backdrop_filter_perf_opengles__timeline_summary
+
+  - name: Linux_pixel_7pro draw_vertices_perf_opengles__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: draw_vertices_perf_opengles__timeline_summary
+
+  - name: Linux_pixel_7pro draw_vertices_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    # Uses Impeller.
+    bringup: true
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["devicelab", "android", "linux", "pixel", "7pro"]
+      task_name: draw_vertices_perf__timeline_summary
+
+  - name: Mac_ios draw_vertices_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: draw_vertices_perf_ios__timeline_summary
+
+  - name: Mac_ios draw_atlas_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: draw_atlas_perf_ios__timeline_summary
+
+  - name: Mac_ios static_path_tessellation_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: static_path_tessellation_perf_ios__timeline_summary
+
+  - name: Mac_ios dynamic_path_tessellation_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: dynamic_path_tessellation_perf_ios__timeline_summary
+
+  - name: Staging_build_linux analyze
+    presubmit: false
+    bringup: true
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      ignore_flakiness: "true"
+      tags: >
+        ["framework","hostonly","linux"]
+      validation: analyze
+      validation_name: Analyze
+
+  - name: Mac_benchmark animated_complex_opacity_perf_macos__e2e_summary
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      task_name: animated_complex_opacity_perf_macos__e2e_summary
+
+  - name: Mac_benchmark basic_material_app_macos__compile
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      task_name: basic_material_app_macos__compile
+
+  - name: Mac build_ios_framework_module_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: build_ios_framework_module_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios build_ios_framework_module_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: build_ios_framework_module_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac build_tests_1_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: build_tests
+      subshard: "1_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac build_tests_2_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: build_tests
+      subshard: "2_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac build_tests_3_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: build_tests
+      subshard: "3_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac build_tests_4_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: build_tests
+      subshard: "4_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac_benchmark complex_layout_macos__start_up
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      task_name: complex_layout_macos__start_up
+
+  - name: Mac_benchmark complex_layout_scroll_perf_macos__timeline_summary
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      task_name: complex_layout_scroll_perf_macos__timeline_summary
+
+  - name: Mac customer_testing
+    enabled_branches:
+      - master
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      validation: customer_testing
+      validation_name: Customer testing
+      tags: >
+        ["framework", "hostonly", "mac"]
+
+  - name: Mac dart_plugin_registry_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: dart_plugin_registry_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_benchmark flutter_gallery_macos__compile
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      task_name: flutter_gallery_macos__compile
+
+  - name: Mac_benchmark flutter_gallery_macos__start_up
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      task_name: flutter_gallery_macos__start_up
+
+  - name: Mac flutter_packaging_test
+    recipe: packaging/packaging
+    timeout: 60
+    enabled_branches:
+      - master
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac_arm64 flutter_packaging_test
+    recipe: packaging/packaging
+    timeout: 60
+    enabled_branches:
+      - master
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac_benchmark flutter_view_macos__start_up
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      task_name: flutter_view_macos__start_up
+
+  - name: Mac framework_tests_libraries
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      cpu: x86 # https://github.com/flutter/flutter/issues/119880
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: libraries
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac framework_tests_misc
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "android_sdk", "version": "version:33v6"}
+        ]
+      shard: framework_tests
+      subshard: misc
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    runIf:
+      - dev/**
+      - examples/api/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac framework_tests_widgets
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      cpu: x86 # https://github.com/flutter/flutter/issues/119880
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: widgets
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac gradle_plugin_bundle_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: gradle_plugin_bundle_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_benchmark hello_world_macos__compile
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      task_name: hello_world_macos__compile
+
+  - name: Mac integration_ui_test_test_macos
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "mac"]
+      task_name: integration_ui_test_test_macos
+
+  - name: Mac module_custom_host_app_name_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: module_custom_host_app_name_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac module_host_with_custom_build_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: module_host_with_custom_build_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac module_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: module_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac module_test_ios
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      cpu: x86 # Codesigning fails on ARM https://github.com/flutter/flutter/issues/112033
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: module_test_ios
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios module_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: module_test_ios
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_benchmark platform_view_macos__start_up
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      task_name: platform_view_macos__start_up
+
+  - name: Mac platform_channel_sample_test_macos
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: platform_channel_sample_test_macos
+
+  - name: Mac plugin_dependencies_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: plugin_dependencies_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac plugin_lint_mac
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: plugin_lint_mac
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - packages/integration_test/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios plugin_lint_mac
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: plugin_lint_mac
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - packages/integration_test/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac plugin_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: plugin_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac plugin_test_ios
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: plugin_test_ios
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac plugin_test_macos
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: plugin_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_x64 tool_host_cross_arch_tests
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      shard: tool_host_cross_arch_tests
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64 tool_host_cross_arch_tests
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      shard: tool_host_cross_arch_tests
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac tool_integration_tests_1_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: tool_integration_tests
+      subshard: "1_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac tool_integration_tests_2_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: tool_integration_tests
+      subshard: "2_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac tool_integration_tests_3_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: tool_integration_tests
+      subshard: "3_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac tool_integration_tests_4_4
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "gems", "version": "v3.3.14"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: tool_integration_tests
+      subshard: "4_4"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac tool_tests_commands
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: commands
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+
+  - name: Mac tool_tests_general
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: general
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_x64 verify_binaries_codesigned
+    enabled_branches:
+      - flutter-\d+\.\d+-candidate\.\d+
+    recipe: flutter/flutter
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      validation: verify_binaries_codesigned
+      validation_name: Verify x64 binaries codesigned
+
+  - name: Mac_arm64 verify_binaries_codesigned
+    enabled_branches:
+      - flutter-\d+\.\d+-candidate\.\d+
+    recipe: flutter/flutter
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+      validation: verify_binaries_codesigned
+      validation_name: Verify arm64 binaries codesigned
+
+  - name: Mac web_tool_tests
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tool_tests
+      subshard: "1_1"
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_android entrypoint_dart_registrant
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: entrypoint_dart_registrant
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_android hello_world_android__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: hello_world_android__compile
+
+  - name: Mac_arm64_android hello_world_android__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac", "arm64"]
+      task_name: hello_world_android__compile
+
+  - name: Mac_android hot_mode_dev_cycle__benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: hot_mode_dev_cycle__benchmark
+
+  - name: Mac_android integration_test_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: integration_test_test
+
+  - name: Mac_arm64_android integration_test_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac", "arm64"]
+      task_name: integration_test_test
+
+  - name: Mac_android integration_ui_frame_number
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: integration_ui_frame_number
+
+  - name: Mac_android microbenchmarks
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: microbenchmarks
+
+  - name: Mac_android run_debug_test_android
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    runIf:
+      - dev/**
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: run_debug_test_android
+
+  - name: Mac_arm64_android run_debug_test_android
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    runIf:
+      - dev/**
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac", "arm64"]
+      task_name: run_debug_test_android
+
+  - name: Mac_android run_release_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    runIf:
+      - dev/**
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac"]
+      task_name: run_release_test
+
+  - name: Mac_arm64_android run_release_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    runIf:
+      - dev/**
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "mac", "arm64"]
+      task_name: run_release_test
+
+  - name: Mac_ios animation_with_microtasks_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: animation_with_microtasks_perf_ios__timeline_summary
+
+  - name: Mac_ios backdrop_filter_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: backdrop_filter_perf_ios__timeline_summary
+
+  - name: Mac_ios basic_material_app_ios__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: basic_material_app_ios__compile
+
+  - name: Mac_ios channels_integration_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: channels_integration_test_ios
+
+  - name: Mac_ios complex_layout_ios__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: complex_layout_ios__start_up
+
+  - name: Mac_ios complex_layout_scroll_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: complex_layout_scroll_perf_ios__timeline_summary
+
+  - name: Mac_ios complex_layout_scroll_perf_bad_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: complex_layout_scroll_perf_bad_ios__timeline_summary
+
+  - name: Mac_ios color_filter_and_fade_perf_ios__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: color_filter_and_fade_perf_ios__e2e_summary
+
+  - name: Mac_ios imagefiltered_transform_animation_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: imagefiltered_transform_animation_perf_ios__timeline_summary
+
+  - name: Mac_ios external_ui_integration_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: external_ui_integration_test_ios
+      ignore_flakiness: "true"
+
+  - name: Mac_ios route_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: route_test_ios
+
+  - name: Mac_ios flavors_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flavors_test_ios
+
+  - name: Mac_ios flutter_gallery_ios__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flutter_gallery_ios__compile
+
+  - name: Mac_arm64_ios flutter_gallery_ios__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: flutter_gallery_ios__compile
+
+  - name: Mac_ios flutter_gallery_ios__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flutter_gallery_ios__start_up
+
+  - name: Mac_ios flutter_gallery_ios__start_up_xcode_debug
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flutter_gallery_ios__start_up_xcode_debug
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14c18"
+        }
+    bringup: true
+
+  - name: Mac_ios flutter_view_ios__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flutter_view_ios__start_up
+
+  - name: Mac_ios hello_world_ios__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: hello_world_ios__compile
+
+  - name: Mac_arm64_ios hello_world_ios__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: hello_world_ios__compile
+
+  - name: Mac_ios hot_mode_dev_cycle_macos_target__benchmark
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: hot_mode_dev_cycle_macos_target__benchmark
+    runIf:
+      - dev/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios hot_mode_dev_cycle_macos_target__benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: hot_mode_dev_cycle_macos_target__benchmark
+    runIf:
+      - dev/**
+
+  - name: Mac_ios integration_test_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_test_test_ios
+
+  - name: Mac_ios integration_ui_ios_driver
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_ui_ios_driver
+
+  - name: Mac_ios integration_ui_ios_driver_xcode_debug
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_ui_ios_driver_xcode_debug
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14c18"
+        }
+    bringup: true
+
+  - name: Mac_ios integration_ui_ios_frame_number
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_ui_ios_frame_number
+
+  - name: Mac_ios integration_ui_ios_keyboard_resize
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_ui_ios_keyboard_resize
+
+  - name: Mac_ios integration_ui_ios_textfield
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: integration_ui_ios_textfield
+
+  - name: Mac_x64 ios_app_with_extensions_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: ios_app_with_extensions_test
+
+  - name: Mac_arm64 ios_app_with_extensions_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac", "arm64"]
+      task_name: ios_app_with_extensions_test
+
+  - name: Mac_ios ios_content_validation_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: ios_content_validation_test
+
+  - name: Mac_arm64_ios ios_content_validation_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: ios_content_validation_test
+
+  - name: Mac_ios ios_defines_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: ios_defines_test
+
+  - name: Mac_ios ios_platform_view_tests
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: ios_platform_view_tests
+
+  - name: Mac_ios large_image_changer_perf_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: large_image_changer_perf_ios
+
+  - name: Mac_ios macos_chrome_dev_mode
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: macos_chrome_dev_mode
+
+  - name: Mac_arm64_ios macos_chrome_dev_mode
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: macos_chrome_dev_mode
+
+  - name: Mac_ios microbenchmarks_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: microbenchmarks_ios
+
+  # TODO(vashworth): Remove after Xcode 15 and iOS 17 are in CI (https://github.com/flutter/flutter/issues/132128)
+  - name: Mac_ios microbenchmarks_ios_xcode_debug
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: microbenchmarks_ios_xcode_debug
+      $flutter/osx_sdk : >-
+        {
+          "sdk_version": "14c18"
+        }
+    bringup: true
+
+  - name: Mac_ios native_assets_ios_simulator
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: native_assets_ios_simulator
+
+  - name: Mac_ios native_assets_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: native_assets_ios
+
+  - name: Mac_ios native_platform_view_ui_tests_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: native_platform_view_ui_tests_ios
+
+  - name: Mac_ios new_gallery_ios__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: new_gallery_ios__transition_perf
+
+  - name: Mac_ios new_gallery_skia_ios__transition_perf
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: new_gallery_skia_ios__transition_perf
+
+  - name: Mac_ios platform_channel_sample_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_channel_sample_test_ios
+
+  - name: Mac_ios platform_channel_sample_test_swift
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_channel_sample_test_swift
+
+  - name: Mac_ios platform_channels_benchmarks_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_channels_benchmarks_ios
+
+  - name: Mac_ios platform_interaction_test_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_interaction_test_ios
+
+  - name: Mac_ios platform_view_ios__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_view_ios__start_up
+
+  - name: Mac_ios platform_views_scroll_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_views_scroll_perf_ios__timeline_summary
+
+  - name: Mac_ios platform_views_scroll_perf_non_intersecting_impeller_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: platform_views_scroll_perf_non_intersecting_impeller_ios__timeline_summary
+
+  - name: Mac_ios post_backdrop_filter_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: post_backdrop_filter_perf_ios__timeline_summary
+
+  - name: Mac_ios simple_animation_perf_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: simple_animation_perf_ios
+
+  - name: Mac_ios wide_gamut_ios
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: wide_gamut_ios
+
+  - name: Mac_ios hot_mode_dev_cycle_ios__benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: hot_mode_dev_cycle_ios__benchmark
+
+  - name: Mac_ios hot_mode_dev_cycle_ios_simulator
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: hot_mode_dev_cycle_ios_simulator
+
+  - name: Mac_ios fullscreen_textfield_perf_ios__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: fullscreen_textfield_perf_ios__e2e_summary
+
+  - name: Mac_ios very_long_picture_scrolling_perf_ios__e2e_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 120
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: very_long_picture_scrolling_perf_ios__e2e_summary
+
+  - name: Mac_ios tiles_scroll_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: tiles_scroll_perf_ios__timeline_summary
+
+  - name: Mac_build_test flutter_gallery__transition_perf_e2e_ios
+    recipe: devicelab/devicelab_drone_build_test
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: flutter_gallery__transition_perf_e2e_ios
+      drone_dimensions: >
+        ["device_os=iOS-16","os=Mac-12|Mac-13", "cpu=x86"]
+
+  - name: Mac_ios animated_blur_backdrop_filter_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: animated_blur_backdrop_filter_perf_ios__timeline_summary
+
+  - name: Mac_ios draw_points_perf_ios__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: draw_points_perf_ios__timeline_summary
+
+  - name: Mac_ios spell_check_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac"]
+      task_name: spell_check_test_ios
+
+  - name: Mac native_ui_tests_macos
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: native_ui_tests_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac channels_integration_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: channels_integration_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac run_debug_test_macos
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: run_debug_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios run_debug_test_macos
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: run_debug_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac run_release_test_macos
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "gems", "version": "v3.3.14"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "mac"]
+      task_name: run_release_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Mac_arm64_ios run_release_test_macos
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "ios", "mac", "arm64"]
+      task_name: run_release_test_macos
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows build_tests_1_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: build_tests
+      subshard: "1_5"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows build_tests_2_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: build_tests
+      subshard: "2_5"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows build_tests_3_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: build_tests
+      subshard: "3_5"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows build_tests_4_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: build_tests
+      subshard: "4_5"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows build_tests_5_5
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: build_tests
+      subshard: "5_5"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows customer_testing
+    enabled_branches:
+      - master
+    recipe: flutter/flutter
+    timeout: 60
+    properties:
+      validation: customer_testing
+      validation_name: Customer testing
+      tags: >
+        ["framework", "hostonly", "windows"]
+
+  - name: Windows framework_tests_libraries
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: libraries
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows framework_tests_misc
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"},
+          {"dependency": "open_jdk", "version": "version:17"},
+          {"dependency": "android_sdk", "version": "version:33v6"}
+        ]
+      shard: framework_tests
+      subshard: misc
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - examples/api/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows framework_tests_widgets
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: framework_tests
+      subshard: widgets
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - packages/flutter/**
+      - packages/flutter_driver/**
+      - packages/integration_test/**
+      - packages/flutter_localizations/**
+      - packages/fuchsia_remote_debug_protocol/**
+      - packages/flutter_test/**
+      - packages/flutter_goldens/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows gradle_plugin_bundle_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: gradle_plugin_bundle_test
+    runIf:
+      - dev/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows hot_mode_dev_cycle_win_target__benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: hot_mode_dev_cycle_win_target__benchmark
+
+  - name: Windows module_custom_host_app_name_test
+    bringup: true # Flaky https://github.com/flutter/flutter/issues/134644
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: module_custom_host_app_name_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows module_host_with_custom_build_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: module_host_with_custom_build_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows module_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: module_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows platform_channel_sample_test_windows
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: platform_channel_sample_test_windows
+
+  - name: Windows plugin_dependencies_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: plugin_dependencies_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows plugin_test
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: plugin_test
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows plugin_test_windows
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: plugin_test_windows
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows run_debug_test_windows
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: run_debug_test_windows
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows_arm64 run_debug_test_windows
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      task_name: run_debug_test_windows
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows run_release_test_windows
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: run_release_test_windows
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows_arm64 run_release_test_windows
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      task_name: run_release_test_windows
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_1_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "1_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_2_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "2_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_3_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "3_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_4_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "4_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_5_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "5_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_integration_tests_6_6
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"},
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      shard: tool_integration_tests
+      subshard: "6_6"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+      test_timeout_secs: "2700"
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_tests_commands
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: commands
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows tool_tests_general
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      add_recipes_cq: "true"
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "open_jdk", "version": "version:11"}
+        ]
+      shard: tool_tests
+      subshard: general
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows web_tool_tests_1_2
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tool_tests
+      subshard: "1_2"
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    runIf:
+      - dev/**
+      - packages/flutter_tools/**
+      - bin/**
+      - .ci.yaml
+
+  - name: Windows web_tool_tests_2_2
+    recipe: flutter/flutter_drone
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "android_sdk", "version": "version:33v6"},
+          {"dependency": "chrome_and_driver", "version": "version:117.0"},
+          {"dependency": "open_jdk", "version": "version:11"},
+          {"dependency": "goldctl", "version": "git_revision:f808dcff91b221ae313e540c09d79696cd08b8de"}
+        ]
+      shard: web_tool_tests
+      subshard: "2_2"
+      tags: >
+        ["framework", "hostonly", "shard"]
+    runIf:
+    - dev/**
+    - packages/flutter_tools/**
+    - bin/**
+    - .ci.yaml
+
+  - name: Windows windows_home_scroll_perf__timeline_summary
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: windows_home_scroll_perf__timeline_summary
+
+  - name: Windows hello_world_win_desktop__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: hello_world_win_desktop__compile
+
+  - name: Windows_arm64 hello_world_win_desktop__compile
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: hello_world_win_desktop__compile
+
+  - name: Windows flutter_gallery_win_desktop__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_gallery_win_desktop__compile
+
+  - name: Windows_arm64 flutter_gallery_win_desktop__compile
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_gallery_win_desktop__compile
+
+  - name: Windows flutter_gallery_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_gallery_win_desktop__start_up
+
+  - name: Windows_arm64 flutter_gallery_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_gallery_win_desktop__start_up
+
+  - name: Windows complex_layout_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: complex_layout_win_desktop__start_up
+
+  - name: Windows_arm64 complex_layout_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: complex_layout_win_desktop__start_up
+
+  - name: Windows flutter_view_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_view_win_desktop__start_up
+
+  - name: Windows_arm64 flutter_view_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: flutter_view_win_desktop__start_up
+
+  - name: Windows platform_view_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: platform_view_win_desktop__start_up
+
+  - name: Windows_arm64 platform_view_win_desktop__start_up
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      task_name: platform_view_win_desktop__start_up
+
+  - name: Windows_android basic_material_app_win__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: basic_material_app_win__compile
+
+  - name: Windows_android channels_integration_test_win
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: channels_integration_test_win
+
+  - name: Windows_android flavors_test_win
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: flavors_test
+
+  - name: Windows_android flutter_gallery_win__compile
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: flutter_gallery_win__compile
+
+  - name: Windows_android hot_mode_dev_cycle_win__benchmark
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: hot_mode_dev_cycle_win__benchmark
+
+  - name: Windows_android windows_chrome_dev_mode
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "android", "windows"]
+      task_name: windows_chrome_dev_mode
+
+  - name: Windows flutter_packaging_test
+    recipe: packaging/packaging
+    timeout: 60
+    enabled_branches:
+      - master
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+
+  - name: Windows windows_startup_test
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: windows_startup_test
+
+  - name: Windows_arm64 windows_startup_test
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      dependencies: >-
+        [
+          {"dependency": "vs_build", "version": "version:vs2019"}
+        ]
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      task_name: windows_startup_test
+
+  - name: Windows flutter_tool_startup__windows
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows"]
+      task_name: flutter_tool_startup
+
+  - name: Windows_arm64 flutter_tool_startup__windows
+    recipe: devicelab/devicelab_drone
+    bringup: true # https://github.com/flutter/flutter/issues/134083
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "windows", "arm64"]
+      task_name: flutter_tool_startup
+
+  - name: Linux flutter_tool_startup__linux
+    recipe: devicelab/devicelab_drone
+    presubmit: false
+    timeout: 60
+    properties:
+      tags: >
+        ["devicelab", "hostonly", "linux"]
+      task_name: flutter_tool_startup
+
+  - name: Mac_benchmark flutter_tool_startup__macos
+    presubmit: false
+    recipe: devicelab/devicelab_drone
+    timeout: 60
+    properties:
+      task_name: flutter_tool_startup
+
+  - name: Linux flutter_packaging
+    recipe: packaging/packaging
+    timeout: 60
+    scheduler: release
+    bringup: true # https://github.com/flutter/flutter/issues/126286
+    enabled_branches:
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "linux"]
+    drone_dimensions:
+      - os=Linux
+
+  - name: Mac flutter_packaging
+    recipe: packaging/packaging
+    timeout: 60
+    scheduler: release
+    enabled_branches:
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    drone_dimensions:
+      - os=Mac
+      - cpu=x86
+
+
+  - name: Mac_arm64 flutter_packaging
+    recipe: packaging/packaging
+    timeout: 60
+    scheduler: release
+    enabled_branches:
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "mac"]
+    drone_dimensions:
+      - os=Mac
+      - cpu=arm64
+
+  - name: Windows flutter_packaging
+    recipe: packaging/packaging
+    timeout: 60
+    scheduler: release
+    bringup: true
+    enabled_branches:
+      - beta
+      - stable
+    properties:
+      task_name: flutter_packaging
+      tags: >
+        ["framework", "hostonly", "shard", "windows"]
+    drone_dimensions:
+      - os=Windows
+
+
+  - name: Linux docs_deploy_beta
+    recipe: flutter/flutter
+    scheduler: release
+    bringup: true
+    enabled_branches:
+      - beta
+    presubmit: false
+    timeout: 60
+    properties:
+      cores: "32"
+      dependencies: >-
+        [
+          {"dependency": "dashing", "version": "0.4.0"},
+          {"dependency": "firebase", "version": "v11.0.1"}
+        ]
+      tags: >
+        ["framework", "hostonly", "linux"]
+      validation: docs_deploy
+      validation_name: Docs_deploy
+      firebase_project: master-docs-flutter-dev
+    drone_dimensions:
+      - os=Linux
+
+  - name: Linux docs_deploy_stable
+    recipe: flutter/flutter
+    scheduler: release
+    bringup: true
+    enabled_branches:
+      - stable
+    presubmit: false
+    timeout: 60
+    properties:
+      cores: "32"
+      dependencies: >-
+        [
+          {"dependency": "dashing", "version": "0.4.0"},
+          {"dependency": "firebase", "version": "v11.0.1"}
+        ]
+      tags: >
+        ["framework", "hostonly", "linux"]
+      validation: docs_deploy
+      validation_name: Docs_deploy
+      firebase_project: docs-flutter-dev
+    drone_dimensions:
+      - os=Linux
diff --git a/flutter/.gitattributes b/flutter/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..1f9dafd2b3939eb017628c26d9b12b95be85505b
--- /dev/null
+++ b/flutter/.gitattributes
@@ -0,0 +1,34 @@
+# Auto detect text files and perform LF normalization
+*        text=auto
+
+# Always perform LF normalization on these files
+*.dart   text
+*.gradle text
+*.html   text
+*.java   text
+*.json   text
+*.md     text
+*.py     text
+*.sh     text
+*.txt    text
+*.xml    text
+*.yaml   text
+
+# Make sure that these Windows files always have CRLF line endings in checkout
+*.bat             text eol=crlf
+*.ps1             text eol=crlf
+*.rc              text eol=crlf
+*.sln             text eol=crlf
+*.props           text eol=crlf
+*.vcxproj         text eol=crlf
+*.vcxproj.filters text eol=crlf
+# Including templatized versions.
+*.sln.tmpl        text eol=crlf
+*.props.tmpl      text eol=crlf
+*.vcxproj.tmpl    text eol=crlf
+
+# Never perform LF normalization on these files
+*.ico    binary
+*.jar    binary
+*.png    binary
+*.zip    binary
diff --git a/flutter/.github/ISSUE_TEMPLATE/1_activation.yml b/flutter/.github/ISSUE_TEMPLATE/1_activation.yml
new file mode 100644
index 0000000000000000000000000000000000000000..44168078600b2c263097f796ab5cbdf8e8ffdca5
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/1_activation.yml
@@ -0,0 +1,88 @@
+name: I am having difficulty installing Flutter or getting it to work
+description: You have run into problems while downloading or installing Flutter, or the
+  "flutter" tool is crashing, or you are running into some other issue before even
+  being able to use "flutter run".
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        If you are looking for support, please check out our documentation
+        or consider asking a question on Stack Overflow:
+
+          - https://flutter.dev/
+          - https://api.flutter.dev/
+          - https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+
+        If you have found a bug or if our documentation doesn't have an answer
+        to what you're looking for, then fill out the template below.
+  - type: checkboxes
+    attributes:
+      label: Is there an existing issue for this?
+      description: Please search to see if an issue already exists for the bug you encountered.
+      options:
+      - label: I have searched the [existing issues](https://github.com/flutter/flutter/issues)
+        required: true
+      - label: I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)
+        required: true
+  - type: textarea
+    attributes:
+      label: Steps to reproduce
+      description: Please tell us exactly how to reproduce the problem you are running into.
+      placeholder: |
+        1. ...
+        2. ...
+        3. ...
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Actual results
+      description: Please tell us what is actually happening
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Logs
+      description: |
+        Include the full logs of the commands you are running between the lines
+        with the backticks below. If you are running any `flutter` commands,
+        please include the output of running them with `--verbose`; for example,
+        the output of running `flutter --verbose create foo`.
+
+        If the logs are too large to be uploaded to Github, you may upload
+        them as a `txt` file or use online tools like https://pastebin.com to
+        share it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload logs.
+      value: |
+        <details>
+        <summary>Logs</summary>
+
+        ```console
+
+        <!-- Paste your logs here -->
+
+        ```
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Flutter Doctor output
+      description: |
+        Please provide the full output of running `flutter doctor -v`
+      value: |
+        <details>
+        <summary>Doctor output</summary>
+
+        ```console
+
+        <!-- Paste your output here -->
+
+        ```
+
+        </details>
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/2_bug.yml b/flutter/.github/ISSUE_TEMPLATE/2_bug.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f696d89dd1ce4d821bee21e6bc324c7cf3a08583
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/2_bug.yml
@@ -0,0 +1,123 @@
+name: Report a bug
+description: |
+  You found a bug in Flutter causing your application to crash or
+  throw an exception, a widget is buggy, or something looks wrong.
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        If you are looking for support, please check out our documentation
+        or consider asking a question on Stack Overflow:
+
+          - https://flutter.dev/
+          - https://api.flutter.dev/
+          - https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+  - type: checkboxes
+    attributes:
+      label: Is there an existing issue for this?
+      options:
+      - label: I have searched the [existing issues](https://github.com/flutter/flutter/issues)
+        required: true
+      - label: I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)
+        required: true
+  - type: textarea
+    attributes:
+      label: Steps to reproduce
+      description: Please tell us exactly how to reproduce the problem you are running into.
+      placeholder: |
+        1. ...
+        2. ...
+        3. ...
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Expected results
+      description: Please tell us what is expected to happen.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Actual results
+      description: Please tell us what is actually happening.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Code sample
+      description: |
+        Please create a minimal reproducible sample that shows the problem
+        and attach it below between the lines with the backticks.
+
+        To create it, use the `flutter create bug` command and update the `main.dart` file.
+
+        Alternatively, you can use https://dartpad.dev/ or create a public GitHub
+        repository to share your sample.
+
+        Without this we will unlikely be able to progress on the issue, and because of that
+        we regretfully will have to close it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload your code sample.
+      value: |
+        <details><summary>Code sample</summary>
+
+        ```dart
+        [Paste your code here]
+        ```
+
+        </details>
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Screenshots or Video
+      description: |
+        Upload any screenshots or video of the bug if applicable.
+      value: |
+        <details>
+        <summary>Screenshots / Video demonstration</summary>
+
+        [Upload media here]
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Logs
+      description: |
+        Include the full logs of the commands you are running between the lines
+        with the backticks below. If you are running any `flutter` commands,
+        please include the output of running them with `--verbose`; for example,
+        the output of running `flutter --verbose create foo`.
+
+        If the logs are too large to be uploaded to GitHub, you may upload
+        them as a `txt` file or use online tools like https://pastebin.com to
+        share it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload logs.
+      value: |
+        <details><summary>Logs</summary>
+
+        ```console
+        [Paste your logs here]
+        ```
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Flutter Doctor output
+      description: |
+        Please provide the full output of running `flutter doctor -v`
+      value: |
+        <details><summary>Doctor output</summary>
+
+        ```console
+        [Paste your output here]
+        ```
+
+        </details>
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/3_feature_request.yml b/flutter/.github/ISSUE_TEMPLATE/3_feature_request.yml
new file mode 100644
index 0000000000000000000000000000000000000000..54c1f1c81ce5f97c2adf5d726f021b69eb0db781
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/3_feature_request.yml
@@ -0,0 +1,53 @@
+name: Feature request
+description: Suggest a new idea for Flutter.
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        If you are looking for support, please check out our documentation
+        or consider asking a question on Stack Overflow:
+
+          - https://flutter.dev/
+          - https://api.flutter.dev/
+          - https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+  - type: checkboxes
+    attributes:
+      label: Is there an existing issue for this?
+      description: Please search to see if an issue already exists for this feature request or proposal.
+      options:
+        - label: I have searched the [existing issues](https://github.com/flutter/flutter/issues)
+          required: true
+        - label: I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)
+          required: true
+  - type: textarea
+    attributes:
+      label: Use case
+      description: |
+        Please tell us the problem you are running into that led to you wanting
+        a new feature.
+
+        Is your feature request related to a problem? Please give a clear and
+        concise description of what the problem is.
+
+        Describe the alternative solutions you've considered. Is there a package
+        on pub.dev/flutter that already solves this?
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Proposal
+      description: |
+        Briefly but precisely describe what you would like Flutter to be able to do.
+
+        Consider attaching something showing what you are imagining:
+         * images
+         * videos
+         * code samples
+
+        Does this have to be provided by Flutter directly, or can it be provided
+        by a package on pub.dev/flutter? If so, maybe consider implementing and
+        publishing such a package rather than filing an issue.
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/4_performance_others.md b/flutter/.github/ISSUE_TEMPLATE/4_performance_others.md
new file mode 100644
index 0000000000000000000000000000000000000000..6777d05ce28f65d137f993d3a209f3b5c5a4d76e
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/4_performance_others.md
@@ -0,0 +1,67 @@
+---
+name: My app has some non-speed performance issues
+about: You are writing an application but have discovered that it uses too much memory, too much energy (e.g., CPU/GPU usage is high), or its app size is too large.
+title: ''
+labels: 'from: performance template'
+assignees: ''
+
+---
+
+<!-- Thank you for using Flutter!
+
+     If you are looking for support, please check out our documentation
+     or consider asking a question on Stack Overflow:
+      * https://flutter.dev/
+      * https://api.flutter.dev/
+      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+
+     If you have found a performance problem, then fill out the template below.
+     Please read our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
+-->
+
+## Details
+
+<!--
+1.  Please tell us exactly how to reproduce the problem you are running into, and how you measured the performance.
+
+2.  Please attach a small application (ideally just one main.dart file) that
+     reproduces the problem. You could use https://gist.github.com/ for this.
+
+3.  Switch flutter to master channel and run this app on a physical device
+     using profile or release mode. Verify that the performance issue can be
+     reproduced there.
+
+     The bleeding edge master channel is encouraged here because Flutter is
+     constantly fixing bugs and improving its performance. Your problem in an
+     older Flutter version may have already been solved in the master channel.
+-->
+
+<!--
+     Please tell us which target platform(s) the problem occurs (Android / iOS / Web / macOS / Linux / Windows)
+     Which target OS version, for Web, browser, is the test system running?
+     Does the problem occur on an emulator/simulator as well as on physical devices?
+-->
+
+**Target Platform:**
+**Target OS version/browser:**
+**Devices:**
+
+## Logs
+
+<details>
+<summary>Logs</summary>
+
+<!--
+     Run `flutter analyze` and attach any output of that command below.
+     If there are any analysis errors, try resolving them before filing this issue.
+-->
+
+```
+```
+
+<!-- Finally, paste the output of running `flutter doctor -v` here, with your device plugged in. -->
+
+```
+```
+
+</details>
diff --git a/flutter/.github/ISSUE_TEMPLATE/5_performance_speed.yml b/flutter/.github/ISSUE_TEMPLATE/5_performance_speed.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8133968f9839724e108fa886905ff59eb571a28a
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/5_performance_speed.yml
@@ -0,0 +1,172 @@
+name: My app is slow or missing frames
+description: |
+  You are writing an application but have discovered that it is slow,
+  you are not hitting 60Hz, or you are getting jank (missed frames).
+labels: 'from: performance template'
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        If you are looking for support, please check out our documentation
+        or consider asking a question on Stack Overflow:
+
+          - https://flutter.dev/
+          - https://api.flutter.dev/
+          - https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+  - type: textarea
+    attributes:
+      label: Steps to reproduce
+      description: Please tell us exactly how to reproduce the problem you are running into.
+      placeholder: |
+        1. ...
+        2. ...
+        3. ...
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Code sample
+      description: |
+        Please create a minimal reproducible sample that shows the problem and attach it below between the lines with the backticks.
+
+        Try to reproduce the problem in a test app. Either run `flutter create janktest` and recreate the situation you are experiencing in that app, or clone your app and delete code until you have the jank reproducing with a single `.dart` file.
+
+        If you need more than just a `.dart` file (for example, assets are needed to reproduce the issue, or plugins/packages are needed to reproduce the issue) then create a GitHub repository and upload code there.
+
+        Without this we will unlikely be able to progress on the issue, and because of that we regretfully will have to close it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks or the above mentioned ways to upload your code sample.
+      value: |
+        <details><summary>Code sample</summary>
+
+        ```dart
+        [Paste your code here]
+        ```
+
+        </details>
+    validations:
+      required: true
+  - type: checkboxes
+    attributes:
+      label: Performance profiling on master channel
+      description: |
+        Switch flutter to master channel and run this app on a physical device using profile mode with Skia tracing enabled, as follows:
+        ```console
+        flutter channel master
+        flutter run --profile --trace-skia
+        ```
+        The bleeding edge master channel is encouraged here because Flutter is constantly fixing bugs and improving its performance. Your problem in an older Flutter version may have already been solved in the master channel.
+      options:
+      - label: The issue still persists on the master channel
+        required: true
+  - type: textarea
+    attributes:
+      label: Timeline Traces
+      description: |
+        Open Flutter DevTools and save a timeline trace of the performance issue so we know which functions might be causing it. See "How to Collect and Read Timeline Traces" on this blog post: https://medium.com/flutter/profiling-flutter-applications-using-the-timeline-a1a434964af3#a499
+
+        Make sure the performance overlay is turned OFF when recording the trace as that may affect the performance of the profile run. (Pressing ‘P’ on the command line toggles the overlay.)
+
+        If the trace are too large to be uploaded to GitHub, you may upload them as a `zip` file or use online tools like https://pastebin.com to share it.
+      value: |
+        <details><summary>Timeline Traces JSON</summary>
+
+        ```json
+        [Paste the Timeline Traces here]
+        ```
+
+        </details>
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Video demonstration
+      description: |
+        Record a video of the performance issue using another phone so we can have an intuitive understanding of what happened.
+
+        Don’t use "adb screenrecord", as that affects the performance of the profile run.
+      value: |
+        <details>
+        <summary>Video demonstration</summary>
+
+        [Upload media here]
+
+        </details>
+  - type: dropdown
+    id: target_platforms
+    attributes:
+      label: What target platforms are you seeing this bug on?
+      multiple: true
+      options:
+        - Android
+        - iOS
+        - Web
+        - macOS
+        - Linux
+        - Windows
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: OS/Browser name and version | Device information
+      description: |
+        Which target OS version is the test system running? For Web, please provide browser version.
+        Please also include the device information (model, CPU architecture, etc).
+    validations:
+      required: true
+  - type: dropdown
+    id: device-kind
+    attributes:
+      label: Does the problem occur on emulator/simulator as well as on physical devices?
+      options:
+        - "Unknown"
+        - "Yes"
+        - "No"
+    validations:
+      required: true
+  - type: dropdown
+    id: enable-impeller
+    attributes:
+      label: Is the problem only reproducible with Impeller?
+      description: |
+        Please check https://docs.flutter.dev/perf/impeller as the guideline on how to enable/disable it.
+      options:
+        - "N/A"
+        - "Yes"
+        - "No"
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Logs
+      description: |
+        Include the full logs of the commands you are running between the lines with the backticks below. If you are running any `flutter` commands, please include the output of running them with `--verbose`; for example, the output of running `flutter --verbose create foo`.
+
+        If the logs are too large to be uploaded to GitHub, you may upload them as a `txt` file or use online tools like https://pastebin.com to share it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks or the above mentioned ways to upload logs.
+      value: |
+        <details><summary>Logs</summary>
+
+        ```console
+        [Paste your logs here]
+        ```
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Flutter Doctor output
+      description: |
+        Finally, paste the output of running `flutter doctor -v` here, with your device plugged in.
+      value: |
+        <details><summary>Doctor output</summary>
+
+        ```console
+        [Paste your output here]
+        ```
+
+        </details>
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/6_infrastructure.yml b/flutter/.github/ISSUE_TEMPLATE/6_infrastructure.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a6cfc9fc71eefc3188beccfd1b73d60bbf13b9f9
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/6_infrastructure.yml
@@ -0,0 +1,75 @@
+name: The CI infrastructure used by Flutter has a problem
+description: |
+  As a contributor, you want to file an issue about the build/test/release
+  infra, e.g. dashboards (http://flutter-dashboard.appspot.com), devicelab,
+  LUCI (https://ci.chromium.org/p/flutter) etc.
+labels: ['team-infra']
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        It looks like you found an issue with our Infrastructure services.
+        Please complete the form below so that we can help to resolve your
+        issue as quickly as possible.
+  - type: checkboxes
+    attributes:
+      label: Is there an existing issue for this?
+      options:
+      - label: I have searched the [existing infra issues](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3Ateam-infra)
+        required: true
+  - type: dropdown
+    attributes:
+      label: Type of Request
+      description: |
+        Is this a bug, feature request or Infra Task?
+
+        If you have a bug and you believe the issue is a blocker please add the P0 label and
+        set the project to 'Infra Ticket Queue.'
+
+        If this is a devicelab feature such as a package update or a device is down please
+        add the 'device-lab' label to the created issue and set the project to 'Infra Ticket Queue.'
+      options:
+        - bug
+        - feature request
+        - infra task
+      default: 0
+    validations:
+      required: true
+  - type: textarea
+    id: env
+    attributes:
+      label: Infrastructure Environment
+      description: |
+        Which part of the infrastructure is this issue occurring? Or, if this is a feature
+        request, where should the feature be implemented?
+      value: LUCI, Github, Cocoon scheduler, Autosubmit, etc...
+    validations:
+      required: true
+  - type: textarea
+    id: affects
+    attributes:
+      label: What is happening?
+      description: |
+        If this is an issue please describe what is happening? If this is a feature request,
+        please describe the use case and provide a proposal of the feature.
+
+        Please include links to build pages, etc.
+      value: Please be descriptive.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Steps to reproduce
+      description: If you have a bug please include steps to reproduce the issue.
+      value: |
+        Step 1:
+        Step 2:
+        ..
+        Step n:
+  - type: textarea
+    attributes:
+      label: Expected results
+      description: If you have a bug, What should the expect output be?
+      value: I expect to see X when Y is finished.
diff --git a/flutter/.github/ISSUE_TEMPLATE/7_cherry_pick.yml b/flutter/.github/ISSUE_TEMPLATE/7_cherry_pick.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8fd172ab4a914e1ff2240646a384d98c52b72705
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/7_cherry_pick.yml
@@ -0,0 +1,97 @@
+name: Request a cherry-pick
+description: As a contributor, you would like to request that a feature be cherry-picked into a release.
+title: '[CP] <title>'
+labels: ['cp: review']
+assignees:
+  - itsjustkevin
+  - caseyhillers
+body:
+  - type: input
+    id: issue_link
+    attributes:
+      label: Issue Link
+      description: What is the link to the issue this cherry-pick is addressing?
+    validations:
+      required: true
+  - type: input
+    id: commit_hash
+    attributes:
+      label: Commit Hash
+      description: What is the shortened commit hash that has been merged to master/main?
+    validations:
+      required: true
+  - type: dropdown
+    id: Target
+    attributes:
+      label: Target
+      description: Should this be cherry-picked to beta or stable?
+      options:
+        - stable
+        - beta
+    validations:
+      required: true
+  - type: input
+    id: pr_link
+    attributes:
+      label: PR Link
+      description: >-
+        Link to an open PR that cherrypick's this into the target release branch.
+        The current branches can be found under release-caniddate-branch.version for [beta](https://github.com/flutter/flutter/blob/beta/bin/internal/release-candidate-branch.version) and [stable](https://github.com/flutter/flutter/blob/stable/bin/internal/release-candidate-branch.version)
+    validations:
+      required: true
+  - type: textarea
+    id: changelog_description
+    attributes:
+      label: Changelog Description
+      description: >-
+        Explain this CP in one line that is accessible to most Flutter developers
+        See https://github.com/flutter/flutter/wiki/Hotfix-Documentation-Best-Practices for examples
+    validations:
+      required: true
+  - type: input
+    id: impacted_users
+    attributes:
+      label: Impacted Users
+      description: Approximately who will hit this issue (ex. all Flutter devs, Windows developers, all end-customers, apps using X framework feature)?
+    validations:
+      required: true
+  - type: textarea
+    id: impact_description
+    attributes:
+      label: Impact Description
+      description: What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
+    validations:
+      required: true
+  - type: textarea
+    id: workaround
+    attributes:
+      label: Workaround
+      description: Is there a workaround for this issue?
+    validations:
+      required: true
+  - type: dropdown
+    id: risk
+    attributes:
+      label: Risk
+      description: What is the risk level of this cherry-pick?
+      options:
+        - low
+        - medium
+        - high
+    validations:
+      required: true
+  - type: dropdown
+    id: test_coverage
+    attributes:
+      label: Test Coverage
+      description: Are you confident that your fix is well-tested by automated tests?
+      options:
+        - "yes"
+        - "no"
+    validations:
+      required: true
+  - type: textarea
+    id: fix_steps
+    attributes:
+      label: Validation Steps
+      description: What are the steps to validate that this fix works?
diff --git a/flutter/.github/ISSUE_TEMPLATE/8_design_doc.yml b/flutter/.github/ISSUE_TEMPLATE/8_design_doc.yml
new file mode 100644
index 0000000000000000000000000000000000000000..76e435697d7d24473a54534ae1d63ff450572f67
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/8_design_doc.yml
@@ -0,0 +1,32 @@
+name: Share a Flutter design document
+description: As a contributor, I would like to share a design document.
+labels: ['design doc']
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for your interest in contributing to Flutter!
+
+        Please ensure that you are following
+        https://github.com/flutter/flutter/wiki/Design-Documents
+        when sharing a design document.
+
+        Please fill out the sections below to the best of your ability.
+  - type: input
+    id: document_link
+    attributes:
+      label: Document Link
+      description: |
+        Insert the "https://flutter.dev/go" link for your document here.
+        For details on creating a link, see the instructions in
+        https://flutter.dev/go/template
+    validations:
+      required: true
+  - type: textarea
+    id: proposal_description
+    attributes:
+      label: What problem are you solving?
+      description: |
+        Please provide a brief description of the problem you are solving.
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/9_first_party_packages.yml b/flutter/.github/ISSUE_TEMPLATE/9_first_party_packages.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0e8ef8ab04b92242d2996974c58865060028f958
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/9_first_party_packages.yml
@@ -0,0 +1,222 @@
+name: Report a bug in one of Flutter's first-party packages
+description: |
+  You found a bug in one of Flutter's first-party packages.
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thank you for using Flutter!
+
+        If you are looking for support, please check out our documentation
+        or consider asking a question on Stack Overflow:
+
+          - https://flutter.dev/
+          - https://api.flutter.dev/
+          - https://stackoverflow.com/questions/tagged/flutter?sort=frequent
+  - type: checkboxes
+    attributes:
+      label: Is there an existing issue for this?
+      options:
+      - label: I have searched the [existing package issues](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3Apackage)
+        required: true
+      - label: I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)
+        required: true
+  - type: dropdown
+    id: packages
+    attributes:
+      label: What package does this bug report belong to?
+      description: |
+        If the package you are reporting a bug for is not listed here,
+        it could be a third party package's issue.
+        In that case, you should report the issue to the package's developers.
+      options:
+        - animations
+        - camera
+        - cross_file
+        - css_colors
+        - dynamic_layouts
+        - espresso
+        - extension_google_sign_in_as_googleapis_auth
+        - file_selector
+        - flutter_adaptive_scaffold
+        - flutter_image
+        - flutter_lints
+        - flutter_markdown
+        - flutter_migrate
+        - flutter_plugin_android_lifecycle
+        - flutter_template_images
+        - go_router
+        - go_router_builder
+        - google_identity_services_web
+        - google_maps_flutter
+        - google_sign_in
+        - image_picker
+        - in_app_purchase
+        - ios_platform_images
+        - local_auth
+        - metrics_center
+        - multicast_dns
+        - palette_generator
+        - path_provider
+        - pigeon
+        - plugin_platform_interface
+        - pointer_interceptor
+        - quick_actions
+        - rfw
+        - shared_preferences
+        - standard_message_codec
+        - url_launcher
+        - video_player
+        - web_benchmarks
+        - webview_flutter
+        - xdg_directories
+    validations:
+      required: true
+  - type: dropdown
+    id: target_platforms
+    attributes:
+      label: What target platforms are you seeing this bug on?
+      description: Have you confirmed that package supports the platform you are reporting against?
+      multiple: true
+      options:
+        - Android
+        - iOS
+        - Web
+        - macOS
+        - Linux
+        - Windows
+    validations:
+      required: true
+  - type: dropdown
+    id: pub_upgrade
+    attributes:
+      label: Have you already upgraded your packages?
+      description: |
+        Please check if the issue still persists or not after running `flutter pub upgrade`.
+      options:
+        - "Yes"
+        - "No"
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Dependency versions
+      description: |
+        `pubspec.lock` file content that includes the package and its dependencies.
+
+        You can remove private dependencies from the file if they are sensitive.
+
+        If the file is too large to be uploaded to GitHub or the content is too long,
+        you may use online tools like https://pastebin.com and share the url here.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload this.
+      value: |
+        <details><summary>pubspec.lock</summary>
+
+        ```lock
+        [Paste file content here]
+        ```
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Steps to reproduce
+      description: Please tell us exactly how to reproduce the problem you are running into.
+      placeholder: |
+        1. ...
+        2. ...
+        3. ...
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Expected results
+      description: Please tell us what is expected to happen.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Actual results
+      description: Please tell us what is actually happening.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Code sample
+      description: |
+        Please create a minimal reproducible sample that shows the problem
+        and attach it below between the lines with the backticks.
+
+        To create it, use the `flutter create bug` command and update the `main.dart` file.
+
+        Alternatively, you can create a public GitHub repository to share your sample.
+
+        Without this we will unlikely be able to progress on the issue, and because of that
+        we regretfully will have to close it.
+
+        You can also refer to the package's example project if it is simple enough
+        to reproduce the bug.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload your code sample.
+      value: |
+        <details><summary>Code sample</summary>
+
+        ```dart
+        [Paste your code here]
+        ```
+
+        </details>
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: Screenshots or Videos
+      description: |
+        Upload any screenshots or videos of the bug if applicable.
+      value: |
+        <details>
+        <summary>Screenshots / Video demonstration</summary>
+
+        [Upload media here]
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Logs
+      description: |
+        Include the full logs of the commands you are running between the lines
+        with the backticks below. If you are running any `flutter` commands,
+        please include the output of running them with `--verbose`; for example,
+        the output of running `flutter --verbose create foo`.
+
+        If the logs are too large to be uploaded to GitHub, you may upload
+        them as a `txt` file or use online tools like https://pastebin.com to
+        share it.
+
+        Note: Please do not upload screenshots of text. Instead, use code blocks
+        or the above mentioned ways to upload logs.
+      value: |
+        <details><summary>Logs</summary>
+
+        ```console
+        [Paste your logs here]
+        ```
+
+        </details>
+  - type: textarea
+    attributes:
+      label: Flutter Doctor output
+      description: |
+        Please provide the full output of running `flutter doctor -v`
+      value: |
+        <details><summary>Doctor output</summary>
+
+        ```console
+        [Paste your output here]
+        ```
+
+        </details>
+    validations:
+      required: true
diff --git a/flutter/.github/ISSUE_TEMPLATE/config.yml b/flutter/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4fca95e7ebbf5d3f133b2a76e5fd24d434b41bab
--- /dev/null
+++ b/flutter/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: true
+contact_links:
+  - name: I want help writing my application
+    url: https://stackoverflow.com/tags/flutter
+    about: Ask your questions about how to achieve a particular effect in Flutter or get help with using a particular API.
diff --git a/flutter/.github/PULL_REQUEST_TEMPLATE.md b/flutter/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000000000000000000000000000000000000..b0683273b1bc2e78dd2a6a534205a912934f6968
--- /dev/null
+++ b/flutter/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,29 @@
+*Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.*
+
+*List which issues are fixed by this PR. You must list at least one issue.*
+
+*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
+
+## Pre-launch Checklist
+
+- [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
+- [ ] I read the [Tree Hygiene] wiki page, which explains my responsibilities.
+- [ ] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
+- [ ] I signed the [CLA].
+- [ ] I listed at least one issue that this PR fixes in the description above.
+- [ ] I updated/added relevant documentation (doc comments with `///`).
+- [ ] I added new tests to check the change I am making, or this PR is [test-exempt].
+- [ ] All existing and new tests are passing.
+
+If you need help, consider asking for advice on the #hackers-new channel on [Discord].
+
+<!-- Links -->
+[Contributor Guide]: https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
+[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
+[test-exempt]: https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
+[Flutter Style Guide]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
+[Features we expect every widget to implement]: https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
+[CLA]: https://cla.developers.google.com/
+[flutter/tests]: https://github.com/flutter/tests
+[breaking change policy]: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
+[Discord]: https://github.com/flutter/flutter/wiki/Chat
diff --git a/flutter/.github/dependabot.yml b/flutter/.github/dependabot.yml
new file mode 100644
index 0000000000000000000000000000000000000000..777c393fa0cd55b14c9bfd0ddb371d9ecda4863f
--- /dev/null
+++ b/flutter/.github/dependabot.yml
@@ -0,0 +1,40 @@
+# See Dependabot documentation for all configuration options:
+# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+  - package-ecosystem: "bundler"
+    directory: "/dev/ci/mac"
+    schedule:
+      interval: "weekly"
+    reviewers:
+      - "christopherfujino"
+      - "vashworth"
+      - "keyonghan"
+      - "yusuf-goog"
+    labels:
+      - "team"
+      - "team: infra"
+      - "autosubmit"
+  - package-ecosystem: "docker"
+    directory: "/dev/ci/docker_linux"
+    schedule:
+      interval: "weekly"
+    reviewers:
+      - "keyonghan"
+      - "yusuf-goog"
+      - "christopherfujino"
+    labels:
+      - "team"
+      - "team: infra"
+      - "autosubmit"
+  - package-ecosystem: "github-actions"
+    directory: "/"
+    schedule:
+      interval: "daily"
+    reviewers:
+      - "godofredoc"
+    labels:
+      - "team"
+      - "team: infra"
+      - "autosubmit"
diff --git a/flutter/.github/labeler.yml b/flutter/.github/labeler.yml
new file mode 100644
index 0000000000000000000000000000000000000000..543d4927e97121aed376bfafddd89c938c72ee15
--- /dev/null
+++ b/flutter/.github/labeler.yml
@@ -0,0 +1,98 @@
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# See https://github.com/actions/labeler/blob/main/README.md for docs.
+'a: accessibility':
+  - '**/accessibility/*'
+  - '**/*accessibility*'
+  - '**/semantics/*'
+  - '**/*semantics*'
+
+'a: animation':
+  - '**/animation/*'
+  - '**/*animation*'
+
+'a: desktop':
+  - '**/linux/**/*'
+  - '**/macos/**/*'
+  - '**/windows/**/*'
+
+'a: internationalization':
+  - packages/flutter_localizations/**/*
+
+'a: tests':
+  - packages/flutter_driver/**/*
+  - packages/flutter_goldens/**/*
+  - packages/flutter_goldens_client/**/*
+  - packages/flutter_test/**/*
+
+'a: text input':
+  - '**/text/*'
+  - '**/*text*'
+
+'d: api docs':
+  - examples/api/**/*
+
+'d: examples':
+  - examples/**/*
+
+engine:
+  - bin/internal/engine.version
+
+'f: cupertino':
+  - '**/cupertino/*'
+  - '**/*cupertino*'
+
+'f: focus':
+  - '**/focus/*'
+  - '**/*focus*'
+
+'f: gestures':
+  - '**/gestures/*'
+  - '**/*gestures*'
+
+'f: material design':
+  - '**/material/*'
+  - '**/*material*'
+
+'f: routes':
+  - '**/navigator/*'
+  - '**/*navigator*'
+  - '**/route/*'
+  - '**/*route*'
+
+'f: scrolling':
+  - '**/*scroll*'
+  - '**/scroll/*'
+  - '**/*sliver*'
+  - '**/sliver/*'
+  - '**/*viewport*'
+  - '**/viewport/*'
+
+framework:
+  - packages/flutter/**/*
+  - packages/flutter_driver/**/*
+  - packages/flutter_goldens/**/*
+  - packages/flutter_goldens_client/**/*
+  - packages/flutter_test/**/*
+  - packages/integration_test/**/*
+  - examples/api/**/*
+
+'f: integration_test':
+  - packages/integration_test/**/*
+
+platform-ios:
+  - packages/flutter_tools/lib/src/ios/**/*
+
+'customer: gallery':
+  - examples/flutter_gallery/**/*
+
+'c: tech-debt':
+  - '**/fix_data.yaml'
+  - '**/*.expect'
+  - '**/*test_fixes*'
+
+tool:
+  - packages/flutter_tools/**/*
+  - packages/fuchsia_remote_debug_protocol/**/*
diff --git a/flutter/.github/release.yml b/flutter/.github/release.yml
new file mode 100644
index 0000000000000000000000000000000000000000..34868f51289913459f2b2abb0af314143204daa2
--- /dev/null
+++ b/flutter/.github/release.yml
@@ -0,0 +1,18 @@
+changelog:
+  exclude:
+    authors:
+      - engine-flutter-autoroll
+      - fluttergithubbot
+    labels:
+      - passed first triage
+      - passed secondary triage
+  categories:
+    - title: Framework
+      labels:
+        - framework
+    - title: Tooling
+      labels:
+        - tool
+    - title: MacOS
+      labels:
+        - platform-mac
diff --git a/flutter/.github/workflows/coverage.yml b/flutter/.github/workflows/coverage.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a1a23a0dbd350eaad03f92c138a803116cfac78a
--- /dev/null
+++ b/flutter/.github/workflows/coverage.yml
@@ -0,0 +1,29 @@
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+name: coverage
+
+on:
+  push:
+    branches:
+      - master
+    paths:
+      - 'packages/flutter/**'
+
+permissions: read-all
+
+jobs:
+  build:
+    name: coverage
+    runs-on: ubuntu-latest
+    if: ${{ github.repository == 'flutter/flutter' }}
+    steps:
+      - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744
+      - name: ./bin/flutter test --coverage
+        run: pushd packages/flutter;../../bin/flutter test --coverage -j 1;popd
+      - name: upload coverage
+        uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d
+        with:
+          files: packages/flutter/coverage/lcov.info
+          verbose: true
diff --git a/flutter/.github/workflows/labeler.yml b/flutter/.github/workflows/labeler.yml
new file mode 100644
index 0000000000000000000000000000000000000000..43c62b2a44fc6b61581c2bb1d47f3e076a0d89d7
--- /dev/null
+++ b/flutter/.github/workflows/labeler.yml
@@ -0,0 +1,22 @@
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+name: "Pull Request Labeler"
+on:
+- pull_request_target
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+  triage:
+    if: ${{ github.repository == 'flutter/flutter' }}
+    permissions:
+      pull-requests: write
+    runs-on: ubuntu-latest
+    steps:
+    # Source available at https://github.com/actions/labeler/blob/main/README.md
+    - uses: actions/labeler@ac9175f8a1f3625fd0d4fb234536d26811351594
+      with:
+        sync-labels: ''
diff --git a/flutter/.github/workflows/lock.yaml b/flutter/.github/workflows/lock.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..072d4d2de5812802fa9d19721afc9e6dd96874d1
--- /dev/null
+++ b/flutter/.github/workflows/lock.yaml
@@ -0,0 +1,31 @@
+# Configuration for Lock Threads - https://github.com/dessant/lock-threads
+
+name: 'Lock Threads'
+
+# By specifying the access of one of the scopes, all of those that are not
+# specified are set to 'none'.
+permissions:
+  issues: write
+
+on:
+  schedule:
+    - cron: '0 * * * *'
+
+jobs:
+  lock:
+    permissions:
+      issues: write
+    runs-on: ubuntu-latest
+    if: ${{ github.repository == 'flutter/flutter' }}
+    steps:
+      - uses: dessant/lock-threads@be8aa5be94131386884a6da4189effda9b14aa21
+        with:
+          process-only: 'issues'
+          github-token: ${{ github.token }}
+          # Number of days of inactivity before a closed issue is locked.
+          issue-inactive-days: '14'
+          issue-comment: >
+            This thread has been automatically locked since there has not been
+            any recent activity after it was closed. If you are still experiencing a
+            similar issue, please open a new bug, including the output of
+            `flutter doctor -v` and a minimal reproduction of the issue.
diff --git a/flutter/.github/workflows/mirror.yml b/flutter/.github/workflows/mirror.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a568c78265469e2e8361ba1851669aedffab884b
--- /dev/null
+++ b/flutter/.github/workflows/mirror.yml
@@ -0,0 +1,28 @@
+# Copyright 2013 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Mirror master to main branches in the flutter repository.
+on:
+  push:
+    branches:
+      - 'master'
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+  mirror_job:
+    permissions:
+      pull-requests: write
+    runs-on: ubuntu-latest
+    if: ${{ github.repository == 'flutter/flutter' }}
+    name: Mirror master branch to main branch
+    steps:
+      - name: Mirror action step
+        id: mirror
+        uses: google/mirror-branch-action@30c52ee21f5d3bd7fb28b95501c11aae7f17eebb
+        with:
+          github-token: ${{ secrets.FLUTTERMIRRORINGBOT_TOKEN }}
+          source: 'master'
+          dest: 'main'
diff --git a/flutter/.github/workflows/no-response.yaml b/flutter/.github/workflows/no-response.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..79cae48251e676fd59f665d103f256f28e012440
--- /dev/null
+++ b/flutter/.github/workflows/no-response.yaml
@@ -0,0 +1,40 @@
+name: No Response
+
+# Both `issue_comment` and `scheduled` event types are required for this Action
+# to work properly.
+on:
+  issue_comment:
+    types: [created]
+  schedule:
+    # Schedule for five minutes after the hour, every hour
+    - cron: '5 * * * *'
+
+# By specifying the access of one of the scopes, all of those that are not
+# specified are set to 'none'.
+permissions:
+  issues: write
+
+jobs:
+  noResponse:
+    runs-on: ubuntu-latest
+    if: ${{ github.repository == 'flutter/flutter' }}
+    steps:
+      - uses: godofredoc/no-response@0ce2dc0e63e1c7d2b87752ceed091f6d32c9df09
+        with:
+          token: ${{ github.token }}
+          # Comment to post when closing an Issue for lack of response. Set to `false` to disable
+          closeComment: >
+            Without additional information, we are unfortunately not sure how to
+            resolve this issue. We are therefore reluctantly going to close this
+            bug for now.
+
+            If you find this problem please file a new issue with the same description,
+            what happens, logs and the output of 'flutter doctor -v'. All system setups
+            can be slightly different so it's always better to open new issues and reference
+            the related ones.
+
+            Thanks for your contribution.
+          # Number of days of inactivity before an issue is closed for lack of response.
+          daysUntilClose: 21
+          # Label requiring a response.
+          responseRequiredLabel: "waiting for customer response"
diff --git a/flutter/.github/workflows/scorecards-analysis.yml b/flutter/.github/workflows/scorecards-analysis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..9ee5be88b630ba757add240599b1b793f97d3963
--- /dev/null
+++ b/flutter/.github/workflows/scorecards-analysis.yml
@@ -0,0 +1,56 @@
+name: Scorecards supply-chain security
+on:
+  # Only the default branch is supported.
+  branch_protection_rule:
+  push:
+    branches: [ master ]
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+  analysis:
+    name: Scorecards analysis
+    runs-on: ubuntu-latest
+    if: ${{ github.repository == 'flutter/flutter' }}
+    permissions:
+      # Needed to upload the results to code-scanning dashboard.
+      security-events: write
+      actions: read
+      contents: read
+      # Needed to access OIDC token.
+      id-token: write
+
+    steps:
+      - name: "Checkout code"
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744
+        with:
+          persist-credentials: false
+
+      - name: "Run analysis"
+        uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031
+        with:
+          results_file: results.sarif
+          results_format: sarif
+          # Read-only PAT token. To create it,
+          # follow the steps in https://github.com/ossf/scorecard-action#pat-token-creation.
+          repo_token: ${{ secrets.SCORECARD_READ_TOKEN }}
+          # Publish the results to enable scorecard badges. For more details, see
+          # https://github.com/ossf/scorecard-action#publishing-results.
+          # For private repositories, `publish_results` will automatically be set to `false`,
+          # regardless of the value entered here.
+          publish_results: true
+
+      # Upload the results as artifacts (optional).
+      - name: "Upload artifact"
+        uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32
+        with:
+          name: SARIF file
+          path: results.sarif
+          retention-days: 5
+
+      # Upload the results to GitHub's code scanning dashboard.
+      - name: "Upload to code-scanning"
+        uses: github/codeql-action/upload-sarif@701f152f28d4350ad289a5e31435e9ab6169a7ca
+        with:
+          sarif_file: results.sarif
diff --git a/flutter/.gitignore b/flutter/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c21169b36a8b94a61831b1825147e3fd76170c3d
--- /dev/null
+++ b/flutter/.gitignore
@@ -0,0 +1,138 @@
+# Do not remove or rename entries in this file, only add new ones
+# See https://github.com/flutter/flutter/issues/128635 for more context.
+
+# Miscellaneous
+*.class
+*.lock
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# Visual Studio Code related
+.classpath
+.project
+.settings/
+.vscode/*
+
+# Flutter repo-specific
+/bin/cache/
+/bin/internal/bootstrap.bat
+/bin/internal/bootstrap.sh
+/bin/mingit/
+/dev/benchmarks/mega_gallery/
+/dev/bots/.recipe_deps
+/dev/bots/android_tools/
+/dev/devicelab/ABresults*.json
+/dev/docs/doc/
+/dev/docs/api_docs.zip
+/dev/docs/flutter.docs.zip
+/dev/docs/lib/
+/dev/docs/pubspec.yaml
+/dev/integration_tests/**/xcuserdata
+/dev/integration_tests/**/Pods
+/packages/flutter/coverage/
+version
+analysis_benchmark.json
+
+# packages file containing multi-root paths
+.packages.generated
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+**/generated_plugin_registrant.dart
+.packages
+.pub-preload-cache/
+.pub-cache/
+.pub/
+build/
+flutter_*.png
+linked_*.ds
+unlinked.ds
+unlinked_spec.ds
+
+# Android related
+**/android/**/gradle-wrapper.jar
+.gradle/
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+**/android/key.properties
+*.jks
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/.last_build_id
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Flutter.podspec
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/ephemeral
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/Flutter/flutter_export_environment.sh
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# macOS
+**/Flutter/ephemeral/
+**/Pods/
+**/macos/Flutter/GeneratedPluginRegistrant.swift
+**/macos/Flutter/ephemeral
+**/xcuserdata/
+
+# Windows
+**/windows/flutter/generated_plugin_registrant.cc
+**/windows/flutter/generated_plugin_registrant.h
+**/windows/flutter/generated_plugins.cmake
+
+# Linux
+**/linux/flutter/generated_plugin_registrant.cc
+**/linux/flutter/generated_plugin_registrant.h
+**/linux/flutter/generated_plugins.cmake
+
+# Coverage
+coverage/
+
+# Symbols
+app.*.symbols
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
+!/dev/ci/**/Gemfile.lock
+!.vscode/settings.json
diff --git a/flutter/.vscode/settings.json b/flutter/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..b46ed90307f9fac9a118436dd66100b06145744c
--- /dev/null
+++ b/flutter/.vscode/settings.json
@@ -0,0 +1,18 @@
+// VSCode workspace settings that are shared among all users of this project.
+// This only affects subdirectories of this project.
+{
+    // VSCode formats files on save by default. Since Flutter source code is
+    // hand-formatted, the default settings are changed to prevent inadvertent
+    // reformatting of code.
+    "[dart]": {
+        "editor.formatOnSave": false,
+        "editor.formatOnType": false,
+        "editor.formatOnPaste": false,
+    },
+
+    "html.format.enable": false,
+    "githubPullRequests.ignoredPullRequestBranches": [
+        "master"
+    ],
+    "files.trimTrailingWhitespace": true
+}
diff --git a/flutter/AUTHORS b/flutter/AUTHORS
new file mode 100644
index 0000000000000000000000000000000000000000..974b9c97057158d4fc5dc91ad02dc9a1407e7eb4
--- /dev/null
+++ b/flutter/AUTHORS
@@ -0,0 +1,119 @@
+# Below is a list of people and organizations that have contributed
+# to the Flutter project. Names should be added to the list like so:
+#
+#   Name/Organization <email address>
+#
+# Anyone who has contributed to the Flutter project in any way (not
+# limited to submitting PRs) is welcome to submit a PR to add their
+# name to this file.
+#
+# Thanks to everyone for your contributions!
+
+Google Inc.
+The Chromium Authors
+The Fuchsia Authors
+Jim Simon <jim.j.simon@gmail.com>
+Lex Berezhny <lex@damoti.com>
+Wyatt Arent <hello@wyatt.ninja>
+Michael Perrotte <mikemimik@gmail.com>
+Günter Zöchbauer <guenter@gzoechbauer.com>
+Raju Bitter <rajubitter@gmail.com>
+Michael Beckler <mcbeckler@gmail.com>
+Alexandre Ardhuin <alexandre.ardhuin@gmail.com>
+Luke Freeman <luke@goposse.com>
+Vincent Le Quéméner <eu.lequem@gmail.com>
+Mike Hoolehan <mike@hoolehan.com>
+German Saprykin <saprykin.h@gmail.com>
+Stefano Rodriguez <hlsroddy@gmail.com>
+Yusuke Konishi <yahpeycoy0403@gmail.com>
+Fredrik Simón <fredrik@fsimon.net>
+Ali Bitek <alibitek@protonmail.ch>
+Tetsuhiro Ueda <najeira@gmail.com>
+Dan Field <dfield@gmail.com>
+Noah Groß <gross@ngsger.de>
+Victor Choueiri <victor@ctrlanddev.com>
+Christian Mürtz <teraarts@t-online.de>
+Lukasz Piliszczuk <lukasz@intheloup.io>
+Felix Schmidt <felix.free@gmx.de>
+Artur Rymarz <artur.rymarz@gmail.com>
+Chema Molins <chemamolins@gmail.com>
+Stefan Mitev <mr.mitew@gmail.com>
+Jasper van Riet <jaspervanriet@gmail.com>
+Mattijs Fuijkschot <mattijs.fuijkschot@gmail.com>
+Volodymyr Lykhonis <vladimirlichonos@gmail.com>
+TruongSinh Tran-Nguyen <i@truongsinh.pro>
+Sander Dalby Larsen <srdlarsen@gmail.com>
+Marco Scannadinari <m@scannadinari.co.uk>
+Frederik Schweiger <mail@flschweiger.net>
+Martin Staadecker <machstg@gmail.com>
+Igor Katsuba <katsuba.igor@gmail.com>
+Diego Velásquez <diego.velasquez.lopez@gmail.com>
+Simon Lightfoot <simon@devangels.london>
+Sarbagya Dhaubanjar <mail@sarbagyastha.com.np>
+Rody Davis Jr <rody.davis.jr@gmail.com>
+Robin Jespersen <info@unitedpartners.de>
+Jefferson Quesado <jeff.quesado@gmail.com>
+Mark Diener <rpzrpzrpz@gmail.com>
+Alek Åström <alek.astrom@gmail.com>
+Efthymios Sarpmpanis <e.sarbanis@gmail.com>
+Cédric Wyss <cedi.wyss@gmail.com>
+Michel Feinstein <michel@feinstein.com.br>
+Michael Lee <ckmichael8@gmail.com>
+Katarina Sheremet <katarina@sheremet.ch>
+Nicolas Schneider <nioncode+git@gmail.com>
+Mikhail Zotyev <mbixjkee1392@gmail.com>
+Maria Melnik <melnikmk@gmail.com>
+Ayush Bherwani <ayush.bherwani1998@gmail.com>
+Luke Cheng <chengludev@gmail.com>
+Brian Wang <xinlei966@gmail.com>
+法的空间 <zmtzawqlp@live.com>
+CaiJingLong <cjl_spy@163.com>
+Alex Li <alexv.525.li@gmail.com>
+Ram Navan <hiramprasad@gmail.com>
+meritozh <ah841814092@gmail.com>
+Terrence Addison Tandijono(flotilla) <terrenceaddison32@gmail.com>
+YeungKC <flutter@yeungkc.com>
+Nobuhiro Tabuki <japanese.around30@gmail.com>
+nt4f04uNd <nt4f04und@gmail.com>
+Anurag Roy <anuragr9847@gmail.com>
+Andrey Kabylin <andrey@kabylin.ru>
+vimerzhao <vimerzhao@gmail.com>
+Pedro Massango <pedromassango.developer@gmail.com>
+Hidenori Matsubayashi <Hidenori.Matsubayashi@sony.com>
+Perqin Xie <perqinxie@gmail.com>
+Seongyun Kim <helloworld@cau.ac.kr>
+Ludwik Trammer <ludwik@gmail.com>
+J-P Nurmi <jpnurmi@gmail.com>
+Marian Triebe <m.triebe@live.de>
+Alexis Rouillard <contact@arouillard.fr>
+Mirko Mucaria <skogsfrae@gmail.com>
+Karol Czeryna <karol.czeryna@gmail.com>
+Callum Moffat <callum@moffatman.com>
+Koutaro Mori <koutaro.mo@gmail.com>
+Sergei Smitskoi <sergflutterdev@gmail.com>
+Casey Rogers <caseycrogers@berkeley.edu>
+Pradumna Saraf <pradumnasaraf@gmail.com>
+Kai Yu <yk3372@gmail.com>
+Denis Grafov <grafov.denis@gmail.com>
+TheOneWithTheBraid <the-one@with-the-braid.cf>
+Alberto Miola <betoman96@gmail.com>
+Twin Sun, LLC <google-contrib@twinsunsolutions.com>
+Taskulu LDA <contributions@taskulu.com>
+Jonathan Joelson <jon@joelson.co>
+Elsabe Ros <hello@elsabe.dev>
+Nguyễn Phúc Lợi <nploi1998@gmail.com>
+Jingyi Chen <jingyichen@link.cuhk.edu.cn>
+Junhua Lin <1075209054@qq.com>
+Tomasz Gucio <tgucio@gmail.com>
+Jason C.H <ctrysbita@outlook.com>
+Hubert Jóźwiak <hjozwiakdx@gmail.com>
+David Neuy <quantjump@gmail.com>
+Eli Albert <crasowas@gmail.com>
+Jan Kuß <jan@kuss.dev>
+André Sousa <andrelvsousa@gmail.com>
+Bartek Pacia <barpac02@gmail.com>
+Mike Rydstrom <m.rydstrom@gmail.com>
+Harish Anbalagan <warriorharish95668@gmail.com>
+Kim Jiun <kkimj@hanyang.ac.kr>
+LinXunFeng <linxunfeng@yeah.net>
+Sabin Neupane <sabin.neupane26@gmail.com>
diff --git a/flutter/CODEOWNERS b/flutter/CODEOWNERS
new file mode 100644
index 0000000000000000000000000000000000000000..dbaf86116924e00d492450f8b2b6d3bb86f1f9f8
--- /dev/null
+++ b/flutter/CODEOWNERS
@@ -0,0 +1,9 @@
+# Below is a list of Flutter team members' GitHub handles who are
+# suggested reviewers for contributions to this repository.
+#
+# These names are just suggestions. It is fine to have your changes
+# reviewed by someone else.
+#
+# Use git ls-files '<pattern>' without a / prefix to see the list of matching files.
+
+/packages/flutter_tools/pubspec.yaml @christopherfujino
diff --git a/flutter/CODE_OF_CONDUCT.md b/flutter/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000000000000000000000000000000000000..86f1ec710e1076763edd748afe6de56e6cbef0ac
--- /dev/null
+++ b/flutter/CODE_OF_CONDUCT.md
@@ -0,0 +1,53 @@
+<!-- when updating this file also update https://github.com/flutter/.github/blob/main/CODE_OF_CONDUCT.md -->
+
+# Code of conduct
+
+The Flutter project expects Flutter's contributors to act professionally
+and respectfully. Flutter contributors are expected to maintain the safety
+and dignity of Flutter's social environments (such as GitHub and Discord).
+
+Specifically:
+
+* Respect people, their identities, their culture, and their work.
+* Be kind. Be courteous. Be welcoming.
+* Listen. Consider and acknowledge people's points before responding.
+
+Should you experience anything that makes you feel unwelcome in Flutter's
+community, please contact [conduct@flutter.dev](mailto:conduct@flutter.dev)
+or, if you prefer, directly contact someone on the project, for instance
+[Hixie](mailto:ian@hixie.ch).
+
+The Flutter project will not tolerate harassment in Flutter's
+community, even outside of Flutter's public communication channels.
+
+## Conflict resolution
+
+When multiple contributors disagree on the direction for a particular
+patch or the general direction of the project, the conflict should be
+resolved by communication. The people who disagree should get
+together, try to understand each other's points of view, and work to
+find a design that addresses everyone's concerns.
+
+This is usually sufficient to resolve issues. If you cannot come to an
+agreement, ask for the advice of a more senior member of the project.
+
+Be wary of agreement by attrition, where one person argues a point
+repeatedly until other participants give up in the interests of moving
+on. This is not conflict resolution, as it does not address everyone's
+concerns. Be wary of agreement by compromise, where two good competing
+solutions are merged into one mediocre solution. A conflict is
+addressed when the participants agree that the final solution is
+_better_ than all the conflicting proposals. Sometimes the solution is
+more work than either of the proposals. [Embrace the yak
+shave](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#lazy-programming).
+
+## Questions
+
+It's always ok to ask questions. Our systems are large, and nobody will be
+an expert in all the systems. Once you find the answer, document it in
+the first place you looked. That way, the next person will be brought
+up to speed even quicker.
+
+!["I try not to make fun of people for admitting they don't know things, because for each thing 'everyone knows' by the time they're adults, every day there are, on average, 10,000 people in the US hearing about it for the first time. If I make fun of people, I train them not to tell me when they have those moments. And I miss out on the fun." "Diet coke and mentos thing? What's that?" "Oh, man! We're going to the grocery store." "Why?" "You're one of today's lucky 10,000."](https://imgs.xkcd.com/comics/ten_thousand.png)
+
+Source: _[xkcd, May 2012](https://xkcd.com/1053/)_
diff --git a/flutter/CONTRIBUTING.md b/flutter/CONTRIBUTING.md
new file mode 100644
index 0000000000000000000000000000000000000000..46e2c045acee51f00490aa52af555db45e4b0f70
--- /dev/null
+++ b/flutter/CONTRIBUTING.md
@@ -0,0 +1,188 @@
+<!-- when editing this file also update https://github.com/flutter/.github/blob/main/CONTRIBUTING.md -->
+
+Contributing to Flutter
+=======================
+
+_tl;dr: join [Discord](https://github.com/flutter/flutter/wiki/Chat), be [courteous](CODE_OF_CONDUCT.md), follow the steps below to set up a development environment; if you stick around and contribute, you can [join the team](https://github.com/flutter/flutter/wiki/Contributor-access) and get commit access._
+
+Welcome
+-------
+
+We invite you to join the Flutter team, which is made up of volunteers and sponsored folk alike!
+There are many ways to contribute, including writing code, filing issues on GitHub, helping people
+on our mailing lists, our chat channels, or on Stack Overflow, helping to triage, reproduce, or
+fix bugs that people have filed, adding to our documentation,
+doing outreach about Flutter, or helping out in any other way.
+
+We grant commit access (which includes full rights to the issue
+database, such as being able to edit labels) to people who have gained
+our trust and demonstrated a commitment to Flutter. For more details
+see the [Contributor access](https://github.com/flutter/flutter/wiki/Contributor-access)
+page on our wiki.
+
+We communicate primarily over GitHub and [Discord](https://github.com/flutter/flutter/wiki/Chat).
+
+Before you get started, we encourage you to read these documents which describe some of our community norms:
+
+1. [Our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly
+   that everyone must be gracious, respectful, and professional. This
+   also documents our conflict resolution policy and encourages people
+   to ask questions.
+
+2. [Values](https://github.com/flutter/flutter/wiki/Values),
+   which talks about what we care most about.
+
+Helping out in the issue database
+---------------------------------
+
+Triage is the process of going through bug reports and determining if they are valid, finding out
+how to reproduce them, catching duplicate reports, and generally making our issues list
+useful for our engineers.
+
+If you want to help us triage, you are very welcome to do so!
+
+1. Join the #hackers-triage [Discord channel](https://github.com/flutter/flutter/wiki/Chat).
+
+2. Read [our code of conduct](CODE_OF_CONDUCT.md), which stipulates explicitly
+   that everyone must be gracious, respectful, and professional. If you're helping out
+   with triage, you are representing the Flutter team, and so you want to make sure to
+   make a good impression!
+
+3. Help out as described in our wiki: https://github.com/flutter/flutter/wiki/Triage
+   You won't be able to add labels at first, so instead start by trying to
+   do the other steps, e.g. trying to reproduce the problem and asking for people to
+   provide enough details that you can reproduce the problem, pointing out duplicates,
+   and so on. Chat on the #hackers-triage channel to let us know what you're up to!
+
+4. Familiarize yourself with our
+   [issue hygiene](https://github.com/flutter/flutter/wiki/Issue-hygiene) wiki page,
+   which covers the meanings of some important GitHub labels and
+   milestones.
+
+5. Once you've been doing this for a while, someone will invite you to the flutter-hackers
+   team on GitHub and you'll be able to add labels too. See the
+   [contributor access](https://github.com/flutter/flutter/wiki/Contributor-access) wiki
+   page for details.
+
+
+Quality Assurance
+-----------------
+
+One of the most useful tasks, closely related to triage, is finding and filing bug reports. Testing
+beta releases, looking for regressions, creating test cases, adding to our test suites, and
+other work along these lines can really drive the quality of the product up. Creating tests
+that increase our test coverage, writing tests for issues others have filed, all these tasks
+are really valuable contributions to open source projects.
+
+If this interests you, you can jump in and submit bug reports without needing anyone's permission!
+The #quality-assurance channel on our [Discord server](https://github.com/flutter/flutter/wiki/Chat)
+is a good place to talk about what you're doing. We're especially eager for QA testing when
+we announce a beta release. See https://github.com/flutter/flutter/wiki/Quality-Assurance for
+more details.
+
+If you want to contribute test cases, you can also submit PRs. See the next section
+for how to set up your development environment, or ask in #hackers-test on Discord.
+
+> As a personal side note, this is exactly the kind of work that first got me into open
+> source. I was a Quality Assurance volunteer on the Mozilla project, writing test cases for
+> browsers, long before I wrote a line of code for any open source project. —Hixie
+
+
+Developing for Flutter
+----------------------
+
+If you would prefer to write code, you may wish to start with our list of [good first issues](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22).
+
+To develop for Flutter, you will eventually need to become familiar
+with our processes and conventions. This section lists the documents
+that describe these methodologies. The following list is ordered: you
+are strongly recommended to go through these documents in the order
+presented.
+
+1. [Setting up your engine development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment),
+   which describes the steps you need to configure your computer to
+   work on Flutter's engine. If you only want to write code for the
+   Flutter framework, you can skip this step. Flutter's engine mainly
+   uses C++, Java, and Objective-C.
+
+2. [Setting up your framework development environment](https://github.com/flutter/flutter/wiki/Setting-up-the-Framework-development-environment),
+   which describes the steps you need to configure your computer to
+   work on Flutter's framework. Flutter's framework mainly uses Dart.
+
+3. [Tree hygiene](https://github.com/flutter/flutter/wiki/Tree-hygiene),
+   which covers how to land a PR, how to do code review, how to
+   handle breaking changes, how to handle regressions, and how to
+   handle post-commit test failures.
+
+4. [Our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo),
+   which includes advice for designing APIs for Flutter, and how to
+   format code in the framework.
+
+5. [Flutter design doc template](https://flutter.dev/go/template),
+   which should be used when proposing a new technical design.  This is a good
+   practice to do before coding more intricate changes.
+   See also our [guidance for writing design docs](https://github.com/flutter/flutter/wiki/Design-Documents).
+
+[![How to contribute to Flutter](https://img.youtube.com/vi/4yBgOBAOx_A/0.jpg)](https://www.youtube.com/watch?v=4yBgOBAOx_A)
+
+In addition to the documents, there is a video linked above on **How to contribute to Flutter**
+from the [Flutter](https://youtube.com/c/flutterdev) YouTube channel,
+there are many pages on [our Wiki](https://github.com/flutter/flutter/wiki/),
+and an article [Contributing to Flutter: Getting Started](https://medium.com/@ayushbherwani/contributing-to-flutter-getting-started-a0db68cbcd5b)
+on Medium that may be of interest. For a curated list of pages see the sidebar
+on the wiki's home page. They are more or less listed in order of importance.
+
+
+Outreach
+--------
+
+If your interests lie in the direction of developer relations and developer outreach,
+whether advocating for Flutter, answering questions in fora like
+[Stack Overflow](https://stackoverflow.com/questions/tagged/flutter?sort=Newest&filters=NoAnswers,NoAcceptedAnswer&edited=true)
+or [Reddit](https://www.reddit.com/r/flutterhelp/new/?f=flair_name%3A%22OPEN%22),
+or creating content for our [documentation](https://docs.flutter.dev/)
+or sites like [YouTube](https://www.youtube.com/results?search_query=flutter&sp=EgQIAxAB),
+the best starting point is to join the #hackers-devrel [Discord channel](https://github.com/flutter/flutter/wiki/Chat).
+From there, you can describe what you're interested in doing, and go ahead and do it!
+As others become familiar with your work, they may have feedback, be interested in
+collaborating, or want to coordinate their efforts with yours.
+
+
+API documentation
+-----------------
+
+Another great area to contribute in is sample code and API documentation. If this is an area that interests you, join our
+[Discord](https://github.com/flutter/flutter/wiki/Chat) server and introduce yourself on the #hackers-deverl, #hackers-framework,
+or #hackers-engine channels, describing your area of interest. As our API docs are integrated into our source code, see the
+"developing for Flutter" section above for a guide on how to set up your developer environment.
+
+To contribute API documentation, an excellent command of the English language is particularly helpful, as is a careful attention to detail.
+We have a [whole section in our style guide](https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc)
+that you should read before you write API documentation. It includes notes on the "Flutter Voice", such as our word and grammar conventions.
+
+In general, a really productive way to improve documentation is to use Flutter and stop any time you have a question: find the answer, then
+document the answer where you first looked for it.
+
+We also keep [a list of areas that need better API documentation](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22d%3A+api+docs%22+sort%3Areactions-%2B1-desc).
+In many cases, we have written down what needs to be said in the relevant issue, we just haven't gotten around to doing it!
+
+We're especially eager to add sample code and diagrams to our API documentation. Diagrams are generated from Flutter code that
+draws to a canvas, and stored in a [special repository](https://github.com/flutter/assets-for-api-docs/#readme). It can be a lot of fun
+to create new diagrams for the API docs.
+
+
+Releases
+--------
+
+If you are interested in participating in our release process, which may involve writing release notes and blog posts, coordinating the actual
+generation of binaries, updating our release tooling, and other work of that nature, then reach out on the #hackers-releases
+channel of our [Discord](https://github.com/flutter/flutter/wiki/Chat) server.
+
+
+Social events in the contributor community
+------------------------------------------
+
+Finally, one area where you could have a lot of impact is in contributing to social interactions among the Flutter contributor community itself.
+This could take the form of organizing weekly video chats on our Discord, or planning tech talks from contributors, for example.
+If this is an area that is of interest to you, please join our [Discord](https://github.com/flutter/flutter/wiki/Chat) and ping Hixie on the #hackers
+channel!
diff --git a/flutter/LICENSE b/flutter/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..aea51a336a305bd31e4e50af448679ed0c73b95e
--- /dev/null
+++ b/flutter/LICENSE
@@ -0,0 +1,25 @@
+Copyright 2014 The Flutter Authors. All rights reserved.
+
+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 Inc. 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/flutter/PATENT_GRANT b/flutter/PATENT_GRANT
new file mode 100644
index 0000000000000000000000000000000000000000..0df0589687ef195d09dd23688ca4949bf769ed34
--- /dev/null
+++ b/flutter/PATENT_GRANT
@@ -0,0 +1,17 @@
+Google hereby grants to you a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this
+section) patent license to make, have made, use, offer to sell, sell,
+import, transfer, and otherwise run, modify and propagate the contents
+of this implementation, where such license applies only to those
+patent claims, both currently owned by Google and acquired in the
+future, licensable by Google that are necessarily infringed by this
+implementation. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute
+or order or agree to the institution of patent litigation or any other
+patent enforcement activity against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that this
+implementation constitutes direct or contributory patent infringement,
+or inducement of patent infringement, then any patent rights granted
+to you under this License for this implementation shall terminate as
+of the date such litigation is filed.
diff --git a/flutter/README.md b/flutter/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7fa62d9b5e88e3483fb2ef4e292511abdae22fbf
--- /dev/null
+++ b/flutter/README.md
@@ -0,0 +1,123 @@
+<a href="https://flutter.dev/">
+  <h1 align="center">
+    <picture>
+      <source media="(prefers-color-scheme: dark)" srcset="https://storage.googleapis.com/cms-storage-bucket/6e19fee6b47b36ca613f.png">
+      <img alt="Flutter" src="https://storage.googleapis.com/cms-storage-bucket/c823e53b3a1a7b0d36a9.png">
+    </picture>
+  </h1>
+</a>
+
+[![Build Status - Cirrus][]][Build status]
+[![Discord badge][]][Discord instructions]
+[![Twitter handle][]][Twitter badge]
+[![codecov](https://codecov.io/gh/flutter/flutter/branch/master/graph/badge.svg?token=11yDrJU2M2)](https://codecov.io/gh/flutter/flutter)
+[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5631/badge)](https://bestpractices.coreinfrastructure.org/projects/5631)
+[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/flutter/flutter/badge)](https://deps.dev/project/github/flutter%2Fflutter)
+[![SLSA 1](https://slsa.dev/images/gh-badge-level1.svg)](https://slsa.dev)
+
+Flutter is Google's SDK for crafting beautiful, fast user experiences for
+mobile, web, and desktop from a single codebase. Flutter works with existing
+code, is used by developers and organizations around the world, and is free and
+open source.
+
+## Documentation
+
+* [Install Flutter](https://flutter.dev/get-started/)
+* [Flutter documentation](https://docs.flutter.dev/)
+* [Development wiki](https://github.com/flutter/flutter/wiki)
+* [Contributing to Flutter](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md)
+
+For announcements about new releases, follow the
+[flutter-announce@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-announce)
+mailing list. Our documentation also tracks [breaking
+changes](https://docs.flutter.dev/release/breaking-changes) across releases.
+
+## Terms of service
+
+The Flutter tool may occasionally download resources from Google servers. By
+downloading or using the Flutter SDK, you agree to the Google Terms of Service:
+https://policies.google.com/terms
+
+For example, when installed from GitHub (as opposed to from a prepackaged
+archive), the Flutter tool will download the Dart SDK from Google servers
+immediately when first run, as it is used to execute the `flutter` tool itself.
+This will also occur when Flutter is upgraded (e.g. by running the `flutter
+upgrade` command).
+
+## About Flutter
+
+We think Flutter will help you create beautiful, fast apps, with a productive,
+extensible and open development model, whether you're targeting iOS or Android,
+web, Windows, macOS, Linux or embedding it as the UI toolkit for a platform of
+your choice.
+
+### Beautiful user experiences
+
+We want to enable designers to deliver their full creative vision without being
+forced to water it down due to limitations of the underlying framework.
+Flutter's [layered architecture] gives you control over every pixel on the
+screen and its powerful compositing capabilities let you overlay and animate
+graphics, video, text, and controls without limitation. Flutter includes a full
+[set of widgets][widget catalog] that deliver pixel-perfect experiences whether
+you're building for iOS ([Cupertino]) or other platforms ([Material]), along with
+support for customizing or creating entirely new visual components.
+
+<p align="center"><img src="https://github.com/flutter/website/blob/main/src/assets/images/docs/homepage/reflectly-hero-600px.png?raw=true" alt="Reflectly hero image"></p>
+
+### Fast results
+
+Flutter is fast. It's powered by the same hardware-accelerated 2D graphics
+library that underpins Chrome and Android: [Skia]. We architected Flutter to
+support glitch-free, jank-free graphics at the native speed of your device.
+Flutter code is powered by the world-class [Dart platform], which enables
+compilation to 32-bit and 64-bit ARM machine code for iOS and Android, as well
+as JavaScript for the web and Intel x64 for desktop devices.
+
+<p align="center"><img src="https://github.com/flutter/website/blob/main/src/assets/images/docs/homepage/dart-diagram-small.png?raw=true" alt="Dart diagram"></p>
+
+### Productive development
+
+Flutter offers [stateful hot reload][Hot reload], allowing you to make changes to your code
+and see the results instantly without restarting your app or losing its state.
+
+[![Hot reload animation][]][Hot reload]
+
+### Extensible and open model
+
+Flutter works with any development tool (or none at all), and also includes
+editor plug-ins for both [Visual Studio Code] and [IntelliJ / Android Studio].
+Flutter provides [tens of thousands of packages][Flutter packages] to speed your
+development, regardless of your target platform. And accessing other native code
+is easy, with support for both FFI ([on Android][Android FFI], [on iOS][iOS FFI],
+[on macOS][macOS FFI], and [on Windows][Windows FFI]) as well as
+[platform-specific APIs][platform channels].
+
+Flutter is a fully open-source project, and we welcome contributions.
+Information on how to get started can be found in our
+[contributor guide](CONTRIBUTING.md).
+
+[flutter.dev]: https://flutter.dev
+[Build Status - Cirrus]: https://api.cirrus-ci.com/github/flutter/flutter.svg
+[Build status]: https://cirrus-ci.com/github/flutter/flutter/master
+[Discord instructions]: https://github.com/flutter/flutter/wiki/Chat
+[Discord badge]: https://img.shields.io/discord/608014603317936148?logo=discord
+[Twitter handle]: https://img.shields.io/twitter/follow/flutterdev.svg?style=social&label=Follow
+[Twitter badge]: https://twitter.com/intent/follow?screen_name=flutterdev
+[layered architecture]: https://docs.flutter.dev/resources/inside-flutter
+[architectural overview]: https://docs.flutter.dev/resources/architectural-overview
+[widget catalog]: https://flutter.dev/widgets/
+[Cupertino]: https://docs.flutter.dev/development/ui/widgets/cupertino
+[Material]: https://docs.flutter.dev/development/ui/widgets/material
+[Skia]: https://skia.org/
+[Dart platform]: https://dart.dev/
+[Hot reload animation]: https://github.com/flutter/website/blob/main/src/assets/images/docs/tools/android-studio/hot-reload.gif?raw=true
+[Hot reload]: https://docs.flutter.dev/development/tools/hot-reload
+[Visual Studio Code]: https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
+[IntelliJ / Android Studio]: https://plugins.jetbrains.com/plugin/9212-flutter
+[Flutter packages]: https://pub.dev/flutter
+[Android FFI]: https://docs.flutter.dev/development/platform-integration/android/c-interop
+[iOS FFI]: https://docs.flutter.dev/development/platform-integration/ios/c-interop
+[macOS FFI]: https://docs.flutter.dev/development/platform-integration/macos/c-interop
+[Windows FFI]: https://docs.flutter.dev/development/platform-integration/windows/building#integrating-with-windows
+[platform channels]: https://docs.flutter.dev/development/platform-integration/platform-channels
+[interop example]: https://github.com/flutter/flutter/tree/master/examples/platform_channel
diff --git a/flutter/TESTOWNERS b/flutter/TESTOWNERS
new file mode 100644
index 0000000000000000000000000000000000000000..4f4096f01b11a2471899a1ee84a730a77e505878
--- /dev/null
+++ b/flutter/TESTOWNERS
@@ -0,0 +1,341 @@
+# Below is a list of Flutter team members' GitHub handles who are
+# test owners of this repository.
+#
+# These owners are mainly team leaders and their sub-teams. Please feel
+# free to claim ownership by adding your handle to corresponding tests.
+#
+# This file will be used as a reference when new flaky bugs are filed and
+# the TL will be assigned and the sub-team will be labeled by default
+# for further triage.
+
+## Linux Android DeviceLab tests
+/dev/devicelab/bin/tasks/analyzer_benchmark.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/android_choreographer_do_frame_test.dart @reidbaker @flutter/engine
+/dev/devicelab/bin/tasks/android_defines_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/android_lifecycles_test.dart @reidbaker @flutter/engine
+/dev/devicelab/bin/tasks/android_obfuscate_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/android_picture_cache_complexity_scoring_perf__timeline_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/android_stack_size_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/android_view_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/animated_complex_image_filtered_perf__e2e_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/animated_complex_opacity_perf__e2e_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/animated_image_gc_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/animated_placeholder_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/backdrop_filter_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/basic_material_app_android__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/clipper_cache_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/codegen_integration.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/color_filter_and_fade_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/color_filter_cache_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/color_filter_with_unstable_child_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_android__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/complex_layout_android__scroll_smoothness.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf__devtools_memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_semantics_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cubic_bezier_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cubic_bezier_perf_sksl_warmup__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cull_opacity_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/devtools_profile_start_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/engine_dependency_proxy_test.dart @godofredoc @flutter/engine
+/dev/devicelab/bin/tasks/fast_scroll_heavy_gridview__memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_engine_group_performance.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__back_button_memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__image_cache_memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__memory_nav.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__start_up_delayed.dart @dnfield @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_e2e.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_hybrid.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_with_semantics.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_android__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/flutter_gallery_sksl_warmup__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_sksl_warmup__transition_perf_e2e.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_v2_chrome_run_test.dart @yjbanov @flutter/web
+/dev/devicelab/bin/tasks/flutter_gallery_v2_web_compile_test.dart @yjbanov @flutter/web
+/dev/devicelab/bin/tasks/flutter_test_performance.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/frame_policy_delay_test_android.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fullscreen_textfield_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fullscreen_textfield_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/gradient_consistent_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/gradient_dynamic_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/gradient_static_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/gradle_java8_compile_test.dart @reidbaker @flutter/tool
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_linux__benchmark.dart @christopherfujino @flutter/tool
+/dev/devicelab/bin/tasks/image_list_jit_reported_duration.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/image_list_reported_duration.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/large_image_changer_perf_android.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/linux_chrome_dev_mode.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/list_text_layout_impeller_perf__e2e_summary.dart @dnfield @flutter/engine
+/dev/devicelab/bin/tasks/list_text_layout_perf__e2e_summary.dart @dnfield @flutter/engine
+/dev/devicelab/bin/tasks/multi_widget_construction_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/new_gallery__crane_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/old_gallery__transition_perf.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_col_of_alpha_savelayer_rows_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_col_of_rows_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_fade_transition_text_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_grid_of_alpha_savelayers_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_grid_of_opacity_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_one_rect_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/opacity_peephole_opacity_of_grid_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/picture_cache_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/platform_channels_benchmarks.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/platform_views_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/platform_views_scroll_perf_impeller__timeline_summary.dart @bdero @flutter/engine
+/dev/devicelab/bin/tasks/plugin_dependencies_test.dart @stuartmorgan @flutter/tool
+/dev/devicelab/bin/tasks/raster_cache_use_memory_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/routing_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/shader_mask_cache_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/spell_check_test_ios.dart @camsim99 @flutter/android
+/dev/devicelab/bin/tasks/spell_check_test.dart @camsim99 @flutter/android
+/dev/devicelab/bin/tasks/textfield_perf__e2e_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/very_long_picture_scrolling_perf__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/web_size__compile_test.dart @yjbanov @flutter/web
+/dev/devicelab/bin/tasks/wide_gamut_ios.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/animated_advanced_blend_perf__timeline_summary.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/animated_advanced_blend_perf_ios__timeline_summary.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/animated_advanced_blend_perf_opengles__timeline_summary.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/animated_blur_backdrop_filter_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/animated_blur_backdrop_filter_perf_opengles__timeline_summary.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/slider_perf_android.dart @tahatesser @flutter/framework
+/dev/devicelab/bin/tasks/draw_vertices_perf_opengles__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_atlas_perf_opengles__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_vertices_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_atlas_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/static_path_tessellation_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/dynamic_path_tessellation_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+
+## Windows Android DeviceLab tests
+/dev/devicelab/bin/tasks/basic_material_app_win__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/channels_integration_test_win.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_win__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/flavors_test_win.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/flutter_gallery_win__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win__benchmark.dart @andrewkolos @flutter/tool
+/dev/devicelab/bin/tasks/windows_chrome_dev_mode.dart @yjbanov @flutter/web
+
+## Mac Android DeviceLab tests
+/dev/devicelab/bin/tasks/android_semantics_integration_test.dart @HansMuller @flutter/framework
+/dev/devicelab/bin/tasks/backdrop_filter_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/channels_integration_test.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/color_filter_and_fade_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf__memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cubic_bezier_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cubic_bezier_perf_sksl_warmup__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/cull_opacity_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/drive_perf_debug_warning.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/embedded_android_views_integration_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/external_ui_integration_test.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fading_child_animation_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fast_scroll_large_images__memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flavors_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/flutter_view__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fullscreen_textfield_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/hello_world__memory.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/hello_world_android__compile.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/hello_world_impeller.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/home_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle__benchmark.dart @eliasyishak @flutter/tool
+/dev/devicelab/bin/tasks/hybrid_android_views_integration_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/imagefiltered_transform_animation_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/integration_test_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_driver.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_frame_number.dart @iskakaushik @flutter/engine
+/dev/devicelab/bin/tasks/integration_ui_keyboard_resize.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_screenshot.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_textfield.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/microbenchmarks.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/new_gallery__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/new_gallery_impeller__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/new_gallery_opengles_impeller__transition_perf.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/picture_cache_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/platform_channel_sample_test.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/platform_interaction_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/platform_view__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/run_release_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/service_extensions_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/textfield_perf__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/tiles_scroll_perf__timeline_summary.dart @zanderso @flutter/engine
+
+## Mac iOS DeviceLab tests
+/dev/devicelab/bin/tasks/animated_complex_opacity_perf_ios__e2e_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/animation_with_microtasks_perf_ios__timeline_summary.dart @iskakaushik @flutter/engine
+/dev/devicelab/bin/tasks/backdrop_filter_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/basic_material_app_ios__compile.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/channels_integration_test_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/codegen_integration_mac.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/color_filter_and_fade_perf_ios__e2e_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_ios__start_up.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf_bad_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/cubic_bezier_perf_ios_sksl_warmup__timeline_summary.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/external_ui_integration_test_ios.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flavors_test_ios.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/flutter_gallery__transition_perf_e2e_ios.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_ios__compile.dart @vashworth @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up.dart @vashworth @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_ios__start_up_xcode_debug.dart @vashworth @flutter/engine
+/dev/devicelab/bin/tasks/flutter_gallery_ios_sksl_warmup__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/flutter_view_ios__start_up.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/fullscreen_textfield_perf_ios__e2e_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/hello_world_ios__compile.dart @vashworth @flutter/engine
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_ios__benchmark.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_ios_simulator.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_macos_target__benchmark.dart @cbracken @flutter/tool
+/dev/devicelab/bin/tasks/imagefiltered_transform_animation_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/integration_test_test_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/integration_ui_ios_driver.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_ios_driver_xcode_debug.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_ios_frame_number.dart @iskakaushik @flutter/engine
+/dev/devicelab/bin/tasks/integration_ui_ios_keyboard_resize.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/integration_ui_ios_screenshot.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/integration_ui_ios_textfield.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/ios_app_with_extensions_test.dart @cyanglaz @flutter/tool
+/dev/devicelab/bin/tasks/ios_content_validation_test.dart @christopherfujino @flutter/tool
+/dev/devicelab/bin/tasks/ios_defines_test.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/ios_picture_cache_complexity_scoring_perf__timeline_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/ios_platform_view_tests.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/large_image_changer_perf_ios.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/macos_chrome_dev_mode.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/microbenchmarks_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/microbenchmarks_ios_xcode_debug.dart @vashworth @flutter/engine
+/dev/devicelab/bin/tasks/native_assets_ios_simulator.dart @dacoharkes @flutter/ios
+/dev/devicelab/bin/tasks/native_assets_ios.dart @dacoharkes @flutter/ios
+/dev/devicelab/bin/tasks/native_platform_view_ui_tests_ios.dart @hellohuanlin @flutter/ios
+/dev/devicelab/bin/tasks/new_gallery_ios__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/new_gallery_skia_ios__transition_perf.dart @zanderso @flutter/engine
+/dev/devicelab/bin/tasks/platform_channel_sample_test_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/platform_channel_sample_test_swift.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/platform_channels_benchmarks_ios.dart @gaaclarke @flutter/engine
+/dev/devicelab/bin/tasks/platform_interaction_test_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/platform_view_ios__start_up.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/platform_views_scroll_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/platform_views_scroll_perf_non_intersecting_impeller_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/post_backdrop_filter_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/route_test_ios.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/simple_animation_perf_ios.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/tiles_scroll_perf_ios__timeline_summary.dart @cyanglaz @flutter/engine
+/dev/devicelab/bin/tasks/very_long_picture_scrolling_perf_ios__e2e_summary.dart @flar @flutter/engine
+/dev/devicelab/bin/tasks/animated_blur_backdrop_filter_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_points_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_vertices_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/draw_atlas_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/static_path_tessellation_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/dynamic_path_tessellation_perf_ios__timeline_summary.dart @jonahwilliams @flutter/engine
+
+## Host only DeviceLab tests
+/dev/devicelab/bin/tasks/animated_complex_opacity_perf_macos__e2e_summary.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/basic_material_app_macos__compile.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/build_aar_module_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/build_ios_framework_module_test.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/channels_integration_test_macos.dart @gaaclarke @flutter/desktop
+/dev/devicelab/bin/tasks/complex_layout_macos__compile.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/complex_layout_macos__start_up.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/complex_layout_scroll_perf_macos__timeline_summary.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/complex_layout_win_desktop__compile.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/complex_layout_win_desktop__start_up.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/dart_plugin_registry_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/entrypoint_dart_registrant.dart @aaclarke @flutter/plugin
+/dev/devicelab/bin/tasks/flavors_test_macos.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_gallery_macos__compile.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_gallery_macos__start_up.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_gallery_win_desktop__compile.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_gallery_win_desktop__start_up.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_tool_startup.dart @jensjoha @flutter/tool
+/dev/devicelab/bin/tasks/flutter_tool_startup__linux.dart @jensjoha @flutter/tool
+/dev/devicelab/bin/tasks/flutter_tool_startup__macos.dart @jensjoha @flutter/tool
+/dev/devicelab/bin/tasks/flutter_tool_startup__windows.dart @jensjoha @flutter/tool
+/dev/devicelab/bin/tasks/flutter_view_macos__start_up.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/flutter_view_win_desktop__start_up.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/gradle_desugar_classes_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/gradle_non_android_plugin_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_non_android_plugin_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_bundle_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_bundle_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_fat_apk_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_fat_apk_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/gradle_plugin_light_apk_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/hello_world_macos__compile.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/hello_world_win_desktop__compile.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/hot_mode_dev_cycle_win_target__benchmark.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/integration_ui_test_test_macos.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/module_custom_host_app_name_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/module_host_with_custom_build_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/module_test.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/module_test_ios.dart @vashworth @flutter/tool
+/dev/devicelab/bin/tasks/native_ui_tests_macos.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/platform_channel_sample_test_macos.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/platform_channel_sample_test_windows.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/platform_view_macos__start_up.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/platform_view_win_desktop__start_up.dart @yaakovschectman @flutter/desktop
+/dev/devicelab/bin/tasks/plugin_lint_mac.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/plugin_test.dart @stuartmorgan @flutter/plugin
+/dev/devicelab/bin/tasks/plugin_test_ios.dart @stuartmorgan @flutter/ios
+/dev/devicelab/bin/tasks/plugin_test_linux.dart @stuartmorgan @flutter/desktop
+/dev/devicelab/bin/tasks/plugin_test_macos.dart @cbracken @flutter/desktop
+/dev/devicelab/bin/tasks/plugin_test_windows.dart @loic-sharma @flutter/desktop
+/dev/devicelab/bin/tasks/run_debug_test_android.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/run_debug_test_android.dart @zanderso @flutter/tool
+/dev/devicelab/bin/tasks/run_debug_test_linux.dart @loic-sharma @flutter/tool
+/dev/devicelab/bin/tasks/run_debug_test_macos.dart @cbracken @flutter/tool
+/dev/devicelab/bin/tasks/run_debug_test_windows.dart @loic-sharma @flutter/tool
+/dev/devicelab/bin/tasks/run_release_test_linux.dart @loic-sharma @flutter/tool
+/dev/devicelab/bin/tasks/run_release_test_macos.dart @cbracken @flutter/tool
+/dev/devicelab/bin/tasks/run_release_test_windows.dart @loic-sharma @flutter/tool
+/dev/devicelab/bin/tasks/technical_debt__cost.dart @HansMuller @flutter/framework
+/dev/devicelab/bin/tasks/web_benchmarks_canvaskit.dart @yjbanov @flutter/web
+/dev/devicelab/bin/tasks/web_benchmarks_html.dart @yjbanov @flutter/web
+/dev/devicelab/bin/tasks/web_benchmarks_skwasm.dart @jacksongardner @flutter/web
+/dev/devicelab/bin/tasks/windows_home_scroll_perf__timeline_summary.dart @jonahwilliams @flutter/engine
+/dev/devicelab/bin/tasks/windows_startup_test.dart @loic-sharma @flutter/desktop
+
+## Host only framework tests
+# Linux analyze
+/dev/bots/analyze.dart @HansMuller @flutter/framework
+# Linux/Mac/Windows customer_testing
+/dev/customer_testing/run_tests.dart @HansMuller @flutter/framework
+# Linux docs
+# Linux docs_test
+# Linux docs_publish
+/dev/bots/docs.sh @HansMuller @flutter/framework
+# Linux packages_autoroller
+/dev/conductor/core @christopherfujino @flutter/tool
+# Linux web_e2e_test
+/dev/integration_tests/web_e2e_tests @yjbanov @flutter/web
+# Linux web_smoke_test
+/examples/hello_world/test_driver/smoke_web_engine.dart @yjbanov @flutter/web
+# Linux android views
+/dev/integration_tests/android_views @gmackall @flutter/android
+# Linux deferred components
+/dev/integration_tests/deferred_components_test @gmackall @flutter/android
+
+## Firebase tests
+/dev/integration_tests/abstract_method_smoke_test @reidbaker @flutter/android
+/dev/integration_tests/android_embedding_v2_smoke_test @reidbaker @flutter/android
+/dev/integration_tests/release_smoke_test @reidbaker @flutter/android
+
+## Shards tests
+# TODO(keyonghan): add files/paths for below framework host only testss.
+# https://github.com/flutter/flutter/issues/82068
+#
+# build_tests @eliasyishak @flutter/tool
+# ci_yaml flutter roller @caseyhillers @flutter/infra
+# coverage @godofredoc @flutter/infra
+# flutter_packaging @godofredoc @flutter/infra
+# flutter_plugins @stuartmorgan @flutter/plugin
+# framework_tests @HansMuller @flutter/framework
+# fuchsia_precache @christopherfujino @flutter/tool
+# skp_generator @Hixie
+# test_ownership @keyonghan
+# tool_host_cross_arch_tests @andrewkolos @flutter/tool
+# tool_integration_tests @christopherfujino @flutter/tool
+# tool_tests @andrewkolos @flutter/tool
+# verify_binaries_codesigned @xilaizhang @flutter/releases
+# web_canvaskit_tests @yjbanov @flutter/web
+# web_integration_tests @yjbanov @flutter/web
+# web_long_running_tests @yjbanov @flutter/web
+# web_tests @yjbanov @flutter/web
+# web_tool_tests @eliasyishak @flutter/tool
diff --git a/flutter/analysis_options.yaml b/flutter/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6bf95b55f404de61dc83dcf39f54f129af93f0d8
--- /dev/null
+++ b/flutter/analysis_options.yaml
@@ -0,0 +1,250 @@
+# Specify analysis options.
+#
+# For a list of lints, see: https://dart.dev/lints
+# For guidelines on configuring static analysis, see:
+# https://dart.dev/guides/language/analysis-options
+#
+# There are other similar analysis options files in the flutter repos,
+# which should be kept in sync with this file:
+#
+#   - analysis_options.yaml (this file)
+#   - https://github.com/flutter/engine/blob/main/analysis_options.yaml
+#   - https://github.com/flutter/packages/blob/main/analysis_options.yaml
+#
+# This file contains the analysis options used for code in the flutter/flutter
+# repository.
+
+analyzer:
+  language:
+    strict-casts: true
+    strict-inference: true
+    strict-raw-types: true
+  errors:
+    # allow self-reference to deprecated members (we do this because otherwise we have
+    # to annotate every member in every test, assert, etc, when we deprecate something)
+    deprecated_member_use_from_same_package: ignore
+  exclude:
+    - "bin/cache/**"
+      # Ignore protoc generated files
+    - "dev/conductor/lib/proto/*"
+
+linter:
+  rules:
+    # This list is derived from the list of all available lints located at
+    # https://github.com/dart-lang/linter/blob/main/example/all.yaml
+    - always_declare_return_types
+    - always_put_control_body_on_new_line
+    # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
+    - always_specify_types
+    # - always_use_package_imports # we do this commonly
+    - annotate_overrides
+    # - avoid_annotating_with_dynamic # conflicts with always_specify_types
+    - avoid_bool_literals_in_conditional_expressions
+    # - avoid_catches_without_on_clauses # blocked on https://github.com/dart-lang/linter/issues/3023
+    # - avoid_catching_errors # blocked on https://github.com/dart-lang/linter/issues/3023
+    # - avoid_classes_with_only_static_members # we do this commonly for `abstract final class`es
+    - avoid_double_and_int_checks
+    - avoid_dynamic_calls
+    - avoid_empty_else
+    - avoid_equals_and_hash_code_on_mutable_classes
+    - avoid_escaping_inner_quotes
+    - avoid_field_initializers_in_const_classes
+    # - avoid_final_parameters # incompatible with prefer_final_parameters
+    - avoid_function_literals_in_foreach_calls
+    # - avoid_implementing_value_types # see https://github.com/dart-lang/linter/issues/4558
+    - avoid_init_to_null
+    - avoid_js_rounded_ints
+    # - avoid_multiple_declarations_per_line # seems to be a stylistic choice we don't subscribe to
+    - avoid_null_checks_in_equality_operators
+    # - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it
+    - avoid_print
+    # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
+    - avoid_redundant_argument_values
+    - avoid_relative_lib_imports
+    - avoid_renaming_method_parameters
+    - avoid_return_types_on_setters
+    - avoid_returning_null_for_void
+    # - avoid_returning_this # there are enough valid reasons to return `this` that this lint ends up with too many false positives
+    - avoid_setters_without_getters
+    - avoid_shadowing_type_parameters
+    - avoid_single_cascade_in_expression_statements
+    - avoid_slow_async_io
+    - avoid_type_to_string
+    - avoid_types_as_parameter_names
+    # - avoid_types_on_closure_parameters # conflicts with always_specify_types
+    - avoid_unnecessary_containers
+    - avoid_unused_constructor_parameters
+    - avoid_void_async
+    # - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
+    - await_only_futures
+    - camel_case_extensions
+    - camel_case_types
+    - cancel_subscriptions
+    # - cascade_invocations # doesn't match the typical style of this repo
+    - cast_nullable_to_non_nullable
+    # - close_sinks # not reliable enough
+    - collection_methods_unrelated_type
+    - combinators_ordering
+    # - comment_references # blocked on https://github.com/dart-lang/linter/issues/1142
+    - conditional_uri_does_not_exist
+    # - constant_identifier_names # needs an opt-out https://github.com/dart-lang/linter/issues/204
+    - control_flow_in_finally
+    - curly_braces_in_flow_control_structures
+    - dangling_library_doc_comments
+    - depend_on_referenced_packages
+    - deprecated_consistency
+    # - deprecated_member_use_from_same_package # we allow self-references to deprecated members
+    # - diagnostic_describe_all_properties # enabled only at the framework level (packages/flutter/lib)
+    - directives_ordering
+    # - discarded_futures # too many false positives, similar to unawaited_futures
+    # - do_not_use_environment # there are appropriate times to use the environment, especially in our tests and build logic
+    - empty_catches
+    - empty_constructor_bodies
+    - empty_statements
+    - eol_at_end_of_file
+    - exhaustive_cases
+    - file_names
+    - flutter_style_todos
+    - hash_and_equals
+    - implementation_imports
+    - implicit_call_tearoffs
+    - implicit_reopen
+    - invalid_case_patterns
+    # - join_return_with_assignment # not required by flutter style
+    - leading_newlines_in_multiline_strings
+    - library_annotations
+    - library_names
+    - library_prefixes
+    - library_private_types_in_public_api
+    # - lines_longer_than_80_chars # not required by flutter style
+    - literal_only_boolean_expressions
+    # - matching_super_parameters # blocked on https://github.com/dart-lang/language/issues/2509
+    - missing_whitespace_between_adjacent_strings
+    - no_adjacent_strings_in_list
+    - no_default_cases
+    - no_duplicate_case_values
+    - no_leading_underscores_for_library_prefixes
+    - no_leading_underscores_for_local_identifiers
+    - no_literal_bool_comparisons
+    - no_logic_in_create_state
+    # - no_runtimeType_toString # ok in tests; we enable this only in packages/
+    - no_self_assignments
+    - no_wildcard_variable_uses
+    - non_constant_identifier_names
+    - noop_primitive_operations
+    - null_check_on_nullable_type_parameter
+    - null_closures
+    # - omit_local_variable_types # opposite of always_specify_types
+    # - one_member_abstracts # too many false positives
+    - only_throw_errors # this does get disabled in a few places where we have legacy code that uses strings et al
+    - overridden_fields
+    - package_api_docs
+    - package_names
+    - package_prefixed_library_names
+    # - parameter_assignments # we do this commonly
+    - prefer_adjacent_string_concatenation
+    - prefer_asserts_in_initializer_lists
+    # - prefer_asserts_with_message # not required by flutter style
+    - prefer_collection_literals
+    - prefer_conditional_assignment
+    - prefer_const_constructors
+    - prefer_const_constructors_in_immutables
+    - prefer_const_declarations
+    - prefer_const_literals_to_create_immutables
+    # - prefer_constructors_over_static_methods # far too many false positives
+    - prefer_contains
+    # - prefer_double_quotes # opposite of prefer_single_quotes
+    # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
+    - prefer_final_fields
+    - prefer_final_in_for_each
+    - prefer_final_locals
+    # - prefer_final_parameters # adds too much verbosity
+    - prefer_for_elements_to_map_fromIterable
+    - prefer_foreach
+    - prefer_function_declarations_over_variables
+    - prefer_generic_function_type_aliases
+    - prefer_if_elements_to_conditional_expressions
+    - prefer_if_null_operators
+    - prefer_initializing_formals
+    - prefer_inlined_adds
+    # - prefer_int_literals # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#use-double-literals-for-double-constants
+    - prefer_interpolation_to_compose_strings
+    - prefer_is_empty
+    - prefer_is_not_empty
+    - prefer_is_not_operator
+    - prefer_iterable_whereType
+    - prefer_mixin
+    # - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
+    - prefer_null_aware_operators
+    - prefer_relative_imports
+    - prefer_single_quotes
+    - prefer_spread_collections
+    - prefer_typing_uninitialized_variables
+    - prefer_void_to_null
+    - provide_deprecation_message
+    # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
+    - recursive_getters
+    # - require_trailing_commas # would be nice, but requires a lot of manual work: 10,000+ code locations would need to be reformatted by hand after bulk fix is applied
+    - secure_pubspec_urls
+    - sized_box_for_whitespace
+    - sized_box_shrink_expand
+    - slash_for_doc_comments
+    - sort_child_properties_last
+    - sort_constructors_first
+    # - sort_pub_dependencies # prevents separating pinned transitive dependencies
+    - sort_unnamed_constructors_first
+    - test_types_in_equals
+    - throw_in_finally
+    - tighten_type_of_initializing_formals
+    # - type_annotate_public_apis # subset of always_specify_types
+    - type_init_formals
+    - type_literal_in_constant_pattern
+    # - unawaited_futures # too many false positives, especially with the way AnimationController works
+    - unnecessary_await_in_return
+    - unnecessary_brace_in_string_interps
+    - unnecessary_breaks
+    - unnecessary_const
+    - unnecessary_constructor_name
+    # - unnecessary_final # conflicts with prefer_final_locals
+    - unnecessary_getters_setters
+    # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
+    - unnecessary_late
+    - unnecessary_library_directive
+    - unnecessary_new
+    - unnecessary_null_aware_assignments
+    - unnecessary_null_aware_operator_on_extension_on_nullable
+    - unnecessary_null_checks
+    - unnecessary_null_in_if_null_operators
+    - unnecessary_nullable_for_final_variable_declarations
+    - unnecessary_overrides
+    - unnecessary_parenthesis
+    # - unnecessary_raw_strings # what's "necessary" is a matter of opinion; consistency across strings can help readability more than this lint
+    - unnecessary_statements
+    - unnecessary_string_escapes
+    - unnecessary_string_interpolations
+    - unnecessary_this
+    - unnecessary_to_list_in_spreads
+    - unreachable_from_main
+    - unrelated_type_equality_checks
+    - unsafe_html
+    - use_build_context_synchronously
+    - use_colored_box
+    # - use_decorated_box # leads to bugs: DecoratedBox and Container are not equivalent (Container inserts extra padding)
+    - use_enums
+    - use_full_hex_values_for_flutter_colors
+    - use_function_type_syntax_for_parameters
+    - use_if_null_to_convert_nulls_to_bools
+    - use_is_even_rather_than_modulo
+    - use_key_in_widget_constructors
+    - use_late_for_private_fields_and_variables
+    - use_named_constants
+    - use_raw_strings
+    - use_rethrow_when_possible
+    - use_setters_to_change_properties
+    # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
+    - use_string_in_part_of_directives
+    - use_super_parameters
+    - use_test_throws_matchers
+    # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
+    - valid_regexps
+    - void_checks
diff --git a/flutter/bin/dart b/flutter/bin/dart
new file mode 100644
index 0000000000000000000000000000000000000000..9ef65c2c436453a0fa47eee6ae63cca84affa241
--- /dev/null
+++ b/flutter/bin/dart
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+# Copyright 2014 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# ---------------------------------- NOTE ---------------------------------- #
+#
+# Please keep the logic in this file consistent with the logic in the
+# `dart.bat` script in the same directory to ensure that Flutter & Dart continue
+# to work across all platforms!
+#
+# -------------------------------------------------------------------------- #
+
+set -e
+
+# Needed because if it is set, cd may print the path it changed to.
+unset CDPATH
+
+# On Mac OS, readlink -f doesn't work, so follow_links traverses the path one
+# link at a time, and then cds into the link destination and find out where it
+# ends up.
+#
+# The returned filesystem path must be a format usable by Dart's URI parser,
+# since the Dart command line tool treats its argument as a file URI, not a
+# filename. For instance, multiple consecutive slashes should be reduced to a
+# single slash, since double-slashes indicate a URI "authority", and these are
+# supposed to be filenames. There is an edge case where this will return
+# multiple slashes: when the input resolves to the root directory. However, if
+# that were the case, we wouldn't be running this shell, so we don't do anything
+# about it.
+#
+# The function is enclosed in a subshell to avoid changing the working directory
+# of the caller.
+function follow_links() (
+  cd -P "$(dirname -- "$1")"
+  file="$PWD/$(basename -- "$1")"
+  while [[ -h "$file" ]]; do
+    cd -P "$(dirname -- "$file")"
+    file="$(readlink -- "$file")"
+    cd -P "$(dirname -- "$file")"
+    file="$PWD/$(basename -- "$file")"
+  done
+  echo "$file"
+)
+
+PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")"
+BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
+SHARED_NAME="$BIN_DIR/internal/shared.sh"
+OS="$(uname -s)"
+
+# If we're on Windows, invoke the batch script instead to get proper locking.
+if [[ $OS =~ MINGW.* || $OS =~ CYGWIN.* || $OS =~ MSYS.* ]]; then
+  exec "${BIN_DIR}/dart.bat" "$@"
+fi
+
+# To define `shared::execute()` function
+source "$SHARED_NAME"
+
+shared::execute "$@"
diff --git a/flutter/bin/dart.bat b/flutter/bin/dart.bat
new file mode 100644
index 0000000000000000000000000000000000000000..62447d98e8841f6ec9119ba2d821275b6a5d59f8
--- /dev/null
+++ b/flutter/bin/dart.bat
@@ -0,0 +1,36 @@
+@ECHO off
+REM Copyright 2014 The Flutter Authors. All rights reserved.
+REM Use of this source code is governed by a BSD-style license that can be
+REM found in the LICENSE file.
+
+REM ---------------------------------- NOTE ----------------------------------
+REM
+REM Please keep the logic in this file consistent with the logic in the
+REM `dart` script in the same directory to ensure that Flutter & Dart continue to
+REM work across all platforms!
+REM
+REM --------------------------------------------------------------------------
+
+SETLOCAL
+
+FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi
+
+REM Include shared scripts in shared.bat
+SET shared_bin=%FLUTTER_ROOT%/bin/internal/shared.bat
+CALL "%shared_bin%"
+
+SET cache_dir=%FLUTTER_ROOT%\bin\cache
+SET dart_sdk_path=%cache_dir%\dart-sdk
+SET dart=%dart_sdk_path%\bin\dart.exe
+
+SET exit_with_errorlevel=%FLUTTER_ROOT%/bin/internal/exit_with_errorlevel.bat
+
+REM Chaining the call to 'dart' and 'exit' with an ampersand ensures that
+REM Windows reads both commands into memory once before executing them. This
+REM avoids nasty errors that may otherwise occur when the dart command (e.g. as
+REM part of 'flutter upgrade') modifies this batch script while it is executing.
+REM
+REM Do not use the CALL command in the next line to execute Dart. CALL causes
+REM Windows to re-read the line from disk after the CALL command has finished
+REM regardless of the ampersand chain.
+"%dart%" %* & "%exit_with_errorlevel%"
diff --git a/flutter/bin/flutter b/flutter/bin/flutter
new file mode 100644
index 0000000000000000000000000000000000000000..21c11c7e7e8ec069acd2ca5bceda0718a32a835d
--- /dev/null
+++ b/flutter/bin/flutter
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+# Copyright 2014 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# ---------------------------------- NOTE ---------------------------------- #
+#
+# Please keep the logic in this file consistent with the logic in the
+# `flutter.bat` script in the same directory to ensure that Flutter continues
+# to work across all platforms!
+#
+# -------------------------------------------------------------------------- #
+
+set -e
+
+# To debug the tool, you can uncomment the following lines to enable debug
+# mode and set an observatory port:
+# FLUTTER_TOOL_ARGS="--enable-asserts $FLUTTER_TOOL_ARGS"
+# FLUTTER_TOOL_ARGS="$FLUTTER_TOOL_ARGS --observe=65432"
+
+# Needed because if it is set, cd may print the path it changed to.
+unset CDPATH
+
+# On Mac OS, readlink -f doesn't work, so follow_links traverses the path one
+# link at a time, and then cds into the link destination and find out where it
+# ends up.
+#
+# The returned filesystem path must be a format usable by Dart's URI parser,
+# since the Dart command line tool treats its argument as a file URI, not a
+# filename. For instance, multiple consecutive slashes should be reduced to a
+# single slash, since double-slashes indicate a URI "authority", and these are
+# supposed to be filenames. There is an edge case where this will return
+# multiple slashes: when the input resolves to the root directory. However, if
+# that were the case, we wouldn't be running this shell, so we don't do anything
+# about it.
+#
+# The function is enclosed in a subshell to avoid changing the working directory
+# of the caller.
+function follow_links() (
+  cd -P "$(dirname -- "$1")"
+  file="$PWD/$(basename -- "$1")"
+  while [[ -h "$file" ]]; do
+    cd -P "$(dirname -- "$file")"
+    file="$(readlink -- "$file")"
+    cd -P "$(dirname -- "$file")"
+    file="$PWD/$(basename -- "$file")"
+  done
+  echo "$file"
+)
+
+PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")"
+BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
+SHARED_NAME="$BIN_DIR/internal/shared.sh"
+OS="$(uname -s)"
+
+# If we're on Windows, invoke the batch script instead to get proper locking.
+if [[ $OS =~ MINGW.* || $OS =~ CYGWIN.* || $OS =~ MSYS.* ]]; then
+  exec "${BIN_DIR}/flutter.bat" "$@"
+fi
+
+# To define `shared::execute()` function
+source "$SHARED_NAME"
+
+shared::execute "$@"
diff --git a/flutter/bin/flutter.bat b/flutter/bin/flutter.bat
new file mode 100644
index 0000000000000000000000000000000000000000..743a7386876cf47df0f3ab0050d0af36924d9f7c
--- /dev/null
+++ b/flutter/bin/flutter.bat
@@ -0,0 +1,55 @@
+@ECHO off
+REM Copyright 2014 The Flutter Authors. All rights reserved.
+REM Use of this source code is governed by a BSD-style license that can be
+REM found in the LICENSE file.
+
+REM ---------------------------------- NOTE ----------------------------------
+REM
+REM Please keep the logic in this file consistent with the logic in the
+REM `flutter` script in the same directory to ensure that Flutter & Dart continue to
+REM work across all platforms!
+REM
+REM --------------------------------------------------------------------------
+
+SETLOCAL
+
+REM To debug the tool, you can uncomment the following line to enable debug mode:
+REM SET FLUTTER_TOOL_ARGS="--enable-asserts %FLUTTER_TOOL_ARGS%"
+
+FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi
+
+REM If available, add location of bundled mingit to PATH
+SET mingit_path=%FLUTTER_ROOT%\bin\mingit\cmd
+IF EXIST "%mingit_path%" SET PATH=%PATH%;%mingit_path%
+
+REM We test if Git is available on the Host as we run git in shared.bat
+REM  Test if the flutter directory is a git clone, otherwise git rev-parse HEAD would fail
+IF NOT EXIST "%flutter_root%\.git" (
+  ECHO Error: The Flutter directory is not a clone of the GitHub project.
+  ECHO        The flutter tool requires Git in order to operate properly;
+  ECHO        to set up Flutter, run the following command:
+  ECHO        git clone -b stable https://github.com/flutter/flutter.git
+  EXIT 1
+)
+
+REM Include shared scripts in shared.bat
+SET shared_bin=%FLUTTER_ROOT%\bin\internal\shared.bat
+CALL "%shared_bin%"
+
+SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
+SET cache_dir=%FLUTTER_ROOT%\bin\cache
+SET snapshot_path=%cache_dir%\flutter_tools.snapshot
+SET dart_sdk_path=%cache_dir%\dart-sdk
+SET dart=%dart_sdk_path%\bin\dart.exe
+
+SET exit_with_errorlevel=%FLUTTER_ROOT%/bin/internal/exit_with_errorlevel.bat
+
+REM Chaining the call to 'dart' and 'exit' with an ampersand ensures that
+REM Windows reads both commands into memory once before executing them. This
+REM avoids nasty errors that may otherwise occur when the dart command (e.g. as
+REM part of 'flutter upgrade') modifies this batch script while it is executing.
+REM
+REM Do not use the CALL command in the next line to execute Dart. CALL causes
+REM Windows to re-read the line from disk after the CALL command has finished
+REM regardless of the ampersand chain.
+"%dart%" --disable-dart-dev --packages="%flutter_tools_dir%\.dart_tool\package_config.json" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %* & "%exit_with_errorlevel%"
diff --git a/flutter/bin/internal/README.md b/flutter/bin/internal/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..8e7047f9d2e388988512d90a48c5eef638fc9487
--- /dev/null
+++ b/flutter/bin/internal/README.md
@@ -0,0 +1,27 @@
+## Flutter SDK dependency versions
+
+The files in this directory specifies pinned versions of various
+dependencies of the flutter SDK.
+
+The `bin/internal/engine.version` file controls which version of the
+Flutter engine to use. The file contains the commit hash of a commit
+in the <https://github.com/flutter/engine> repository. That hash must
+have successfully been compiled on
+<https://build.chromium.org/p/client.flutter/> and had its artifacts
+(the binaries that run on Android and iOS, the compiler, etc)
+successfully uploaded to Google Cloud Storage.
+
+The `/bin/internal/engine.merge_method` file controls how we merge a
+pull request created by the engine auto-roller. If it's `squash`,
+there's only one commit for a pull request no matter how many engine
+commits there are inside that pull request. If it's `rebase`, the
+number of commits in the framework is equal to the number of engine
+commits in the pull request. The latter method makes it easier to
+detect regressions but costs more test resources.
+
+The `bin/internal/flutter_packages.version` file specifies the version
+of the `flutter/packages` repository to be used for testing. The
+`flutter/packages` repository isn't an upstream dependency of
+`flutter/flutter`; it is only used as part of the test suite for
+verification, and the pinned version here makes sure that tests are
+deterministic at each `flutter/flutter` commit.
diff --git a/flutter/bin/internal/canvaskit.version b/flutter/bin/internal/canvaskit.version
new file mode 100644
index 0000000000000000000000000000000000000000..5fc5e0c62cfd5c1da369125f3a8444d240424ee3
--- /dev/null
+++ b/flutter/bin/internal/canvaskit.version
@@ -0,0 +1 @@
+61aeJQ9laGfEFF_Vlc_u0MCkqB6xb2hAYHRBxKH-Uw4C
diff --git a/flutter/bin/internal/engine.merge_method b/flutter/bin/internal/engine.merge_method
new file mode 100644
index 0000000000000000000000000000000000000000..0ca3a58d08c17700c14d18ed3d54628abbcec7aa
--- /dev/null
+++ b/flutter/bin/internal/engine.merge_method
@@ -0,0 +1 @@
+squash
diff --git a/flutter/bin/internal/engine.realm b/flutter/bin/internal/engine.realm
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/flutter/bin/internal/engine.version b/flutter/bin/internal/engine.version
new file mode 100644
index 0000000000000000000000000000000000000000..660710c2b16e77d705bbbe4571f63e4bd50e669a
--- /dev/null
+++ b/flutter/bin/internal/engine.version
@@ -0,0 +1 @@
+f40e976bedff57e69e1b3d89a7c2a3c617a03dad
diff --git a/flutter/bin/internal/exit_with_errorlevel.bat b/flutter/bin/internal/exit_with_errorlevel.bat
new file mode 100644
index 0000000000000000000000000000000000000000..921624d5b0cb8d6f791f3f438da9c1a9b38ef5fe
--- /dev/null
+++ b/flutter/bin/internal/exit_with_errorlevel.bat
@@ -0,0 +1,13 @@
+@ECHO off
+REM Copyright 2014 The Flutter Authors. All rights reserved.
+REM Use of this source code is governed by a BSD-style license that can be
+REM found in the LICENSE file.
+
+REM A script to exit caller script with the last status code.
+REM This can be used with ampersand without `SETLOCAL ENABLEDELAYEDEXPANSION`.
+REM
+REM To use this script like `exit`, do not use with the CALL command.
+REM Without CALL, this script can exit caller script, but with CALL,
+REM this script returns back to caller and does not exit caller.
+
+exit /B %ERRORLEVEL%
diff --git a/flutter/bin/internal/flutter_packages.version b/flutter/bin/internal/flutter_packages.version
new file mode 100644
index 0000000000000000000000000000000000000000..cf81bee4c12fb93be4d2e747cd6309e54b81a56e
--- /dev/null
+++ b/flutter/bin/internal/flutter_packages.version
@@ -0,0 +1 @@
+c070b0a7a80a54d5fad254fecdfd98ffe764bd4e
diff --git a/flutter/bin/internal/fuchsia-linux.version b/flutter/bin/internal/fuchsia-linux.version
new file mode 100644
index 0000000000000000000000000000000000000000..6331e09a5f4234b4a934c3549d104f0c0ec97a5c
--- /dev/null
+++ b/flutter/bin/internal/fuchsia-linux.version
@@ -0,0 +1 @@
+l2RxJKPfYn7QzGOoLPUPk0FyRZxbYTRv1JiQJgUbm9sC
diff --git a/flutter/bin/internal/fuchsia-mac.version b/flutter/bin/internal/fuchsia-mac.version
new file mode 100644
index 0000000000000000000000000000000000000000..87ee95f0b41071394a5f3bde9b367af65534f9f6
--- /dev/null
+++ b/flutter/bin/internal/fuchsia-mac.version
@@ -0,0 +1 @@
+4WW3KRrAbuY7VeGT0pBFAQktetsyx-3C0mKMNxCd0uYC
diff --git a/flutter/bin/internal/gradle_wrapper.version b/flutter/bin/internal/gradle_wrapper.version
new file mode 100644
index 0000000000000000000000000000000000000000..9aafad46c97bd225bd2262459d8395c5938f4ed7
--- /dev/null
+++ b/flutter/bin/internal/gradle_wrapper.version
@@ -0,0 +1 @@
+flutter_infra_release/gradle-wrapper/fd5c1f2c013565a3bea56ada6df9d2b8e96d56aa/gradle-wrapper.tgz
diff --git a/flutter/bin/internal/ios-deploy.version b/flutter/bin/internal/ios-deploy.version
new file mode 100644
index 0000000000000000000000000000000000000000..4c69cf17fe35820f769068246f69b0a5163d1ff1
--- /dev/null
+++ b/flutter/bin/internal/ios-deploy.version
@@ -0,0 +1 @@
+7a29ab0b6d611f2bf5de4b6f929a82a091866307
diff --git a/flutter/bin/internal/libimobiledevice.version b/flutter/bin/internal/libimobiledevice.version
new file mode 100644
index 0000000000000000000000000000000000000000..3efb10b51f8c87009ef47936aff5ef00d0a1de8f
--- /dev/null
+++ b/flutter/bin/internal/libimobiledevice.version
@@ -0,0 +1 @@
+2ba8188ed97d8b05670845e5b5954e2fe0f54784
diff --git a/flutter/bin/internal/libplist.version b/flutter/bin/internal/libplist.version
new file mode 100644
index 0000000000000000000000000000000000000000..8619a4b85a686f0582f64f8a8b14f57f619d8edb
--- /dev/null
+++ b/flutter/bin/internal/libplist.version
@@ -0,0 +1 @@
+20a2f8dbddcf1a96ad4c720b9afd1d0876d17ffc
diff --git a/flutter/bin/internal/libzip.version b/flutter/bin/internal/libzip.version
new file mode 100644
index 0000000000000000000000000000000000000000..736a9a9d2283d055a5bcc9708188a14aef8fda37
--- /dev/null
+++ b/flutter/bin/internal/libzip.version
@@ -0,0 +1 @@
+8fb14f99a8854d4e2b16559c0eb48e7c297065ce
diff --git a/flutter/bin/internal/material_fonts.version b/flutter/bin/internal/material_fonts.version
new file mode 100644
index 0000000000000000000000000000000000000000..237bd69c0beb5332f659ccfac84b87bd8a4868c6
--- /dev/null
+++ b/flutter/bin/internal/material_fonts.version
@@ -0,0 +1 @@
+flutter_infra_release/flutter/fonts/3012db47f3130e62f7cc0beabff968a33cbec8d8/fonts.zip
diff --git a/flutter/bin/internal/openssl.version b/flutter/bin/internal/openssl.version
new file mode 100644
index 0000000000000000000000000000000000000000..6d2eb55065c53788dd4891143126230e25a2ed73
--- /dev/null
+++ b/flutter/bin/internal/openssl.version
@@ -0,0 +1 @@
+e2e09d9fba1187f8d6aafaa34d4172f56f1ffb72
diff --git a/flutter/bin/internal/release-candidate-branch.version b/flutter/bin/internal/release-candidate-branch.version
new file mode 100644
index 0000000000000000000000000000000000000000..0ca38b3c50500611b002e83f4618693266418b0b
--- /dev/null
+++ b/flutter/bin/internal/release-candidate-branch.version
@@ -0,0 +1 @@
+flutter-3.16-candidate.0
diff --git a/flutter/bin/internal/shared.bat b/flutter/bin/internal/shared.bat
new file mode 100644
index 0000000000000000000000000000000000000000..421868a9ee5805d4672a71ab40c92348ba236f6d
--- /dev/null
+++ b/flutter/bin/internal/shared.bat
@@ -0,0 +1,208 @@
+@ECHO off
+REM Copyright 2014 The Flutter Authors. All rights reserved.
+REM Use of this source code is governed by a BSD-style license that can be
+REM found in the LICENSE file.
+
+REM ---------------------------------- NOTE ----------------------------------
+REM
+REM Please keep the logic in this file consistent with the logic in the
+REM `shared.sh` script in the same directory to ensure that Flutter & Dart continue to
+REM work across all platforms!
+REM
+REM --------------------------------------------------------------------------
+
+SETLOCAL
+
+SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
+SET cache_dir=%FLUTTER_ROOT%\bin\cache
+SET snapshot_path=%cache_dir%\flutter_tools.snapshot
+SET snapshot_path_old=%cache_dir%\flutter_tools.snapshot.old
+SET stamp_path=%cache_dir%\flutter_tools.stamp
+SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
+SET dart_sdk_path=%cache_dir%\dart-sdk
+SET engine_stamp=%cache_dir%\engine-dart-sdk.stamp
+SET engine_version_path=%FLUTTER_ROOT%\bin\internal\engine.version
+SET dart=%dart_sdk_path%\bin\dart.exe
+
+REM Ensure that bin/cache exists.
+IF NOT EXIST "%cache_dir%" MKDIR "%cache_dir%"
+
+REM If the cache still doesn't exist, fail with an error that we probably don't have permissions.
+IF NOT EXIST "%cache_dir%" (
+  ECHO Error: Unable to create cache directory at                                 1>&2
+  ECHO            %cache_dir%                                                     1>&2
+  ECHO.                                                                           1>&2
+  ECHO        This may be because flutter doesn't have write permissions for      1>&2
+  ECHO        this path. Try moving the flutter directory to a writable location, 1>&2
+  ECHO        such as within your home directory.                                 1>&2
+  EXIT 1
+)
+
+:acquire_lock
+2>NUL (
+  REM "3" is now stderr because of "2>NUL".
+  CALL :subroutine %* 2>&3 9> "%cache_dir%\flutter.bat.lock" || GOTO acquire_lock
+)
+GOTO :after_subroutine
+
+:subroutine
+  REM If present, run the bootstrap script first
+  SET bootstrap_path=%FLUTTER_ROOT%\bin\internal\bootstrap.bat
+  IF EXIST "%bootstrap_path%" (
+    CALL "%bootstrap_path%"
+  )
+
+  REM Check that git exists and get the revision
+  SET git_exists=false
+  2>NUL (
+    PUSHD "%flutter_root%"
+    FOR /f %%r IN ('git rev-parse HEAD') DO (
+      SET git_exists=true
+      SET revision=%%r
+    )
+    POPD
+  )
+  REM If git didn't execute we don't have git. Exit without /B to avoid retrying.
+  if %git_exists% == false echo Error: Unable to find git in your PATH. && EXIT 1
+  SET compilekey="%revision%:%FLUTTER_TOOL_ARGS%"
+
+  REM Invalidate cache if:
+  REM  * SNAPSHOT_PATH is not a file, or
+  REM  * STAMP_PATH is not a file, or
+  REM  * STAMP_PATH is an empty file, or
+  REM  * Contents of STAMP_PATH is not what we are going to compile, or
+  REM  * pubspec.yaml last modified after pubspec.lock
+
+  REM The following IF conditions are all linked with a logical OR. However,
+  REM there is no OR operator in batch and a GOTO construct is used as replacement.
+
+  IF NOT EXIST "%engine_stamp%" GOTO do_sdk_update_and_snapshot
+  SET /P dart_required_version=<"%engine_version_path%"
+  SET /P dart_installed_version=<"%engine_stamp%"
+  IF %dart_required_version% NEQ %dart_installed_version% GOTO do_sdk_update_and_snapshot
+  IF NOT EXIST "%snapshot_path%" GOTO do_snapshot
+  IF NOT EXIST "%stamp_path%" GOTO do_snapshot
+  SET /P stamp_value=<"%stamp_path%"
+  IF %stamp_value% NEQ %compilekey% GOTO do_snapshot
+  SET pubspec_yaml_path=%flutter_tools_dir%\pubspec.yaml
+  SET pubspec_lock_path=%flutter_tools_dir%\pubspec.lock
+  FOR /F %%i IN ('DIR /B /O:D "%pubspec_yaml_path%" "%pubspec_lock_path%"') DO SET newer_file=%%i
+  FOR %%i IN (%pubspec_yaml_path%) DO SET pubspec_yaml_timestamp=%%~ti
+  FOR %%i IN (%pubspec_lock_path%) DO SET pubspec_lock_timestamp=%%~ti
+  IF "%pubspec_yaml_timestamp%" == "%pubspec_lock_timestamp%" SET newer_file=""
+  IF "%newer_file%" EQU "pubspec.yaml" GOTO do_snapshot
+
+  REM Everything is up-to-date - exit subroutine
+  EXIT /B
+
+  :do_sdk_update_and_snapshot
+    REM Detect which PowerShell executable is available on the Host
+    REM PowerShell version <= 5: PowerShell.exe
+    REM PowerShell version >= 6: pwsh.exe
+    WHERE /Q pwsh.exe && (
+        SET powershell_executable=pwsh.exe
+    ) || WHERE /Q PowerShell.exe && (
+        SET powershell_executable=PowerShell.exe
+    ) || (
+        ECHO Error: PowerShell executable not found.                        1>&2
+        ECHO        Either pwsh.exe or PowerShell.exe must be in your PATH. 1>&2
+        EXIT 1
+    )
+    ECHO Checking Dart SDK version... 1>&2
+    SET update_dart_bin=%FLUTTER_ROOT%\bin\internal\update_dart_sdk.ps1
+    REM Escape apostrophes from the executable path
+    SET "update_dart_bin=%update_dart_bin:'=''%"
+    REM PowerShell command must have exit code set in order to prevent all non-zero exit codes from being translated
+    REM into 1. The exit code 2 is used to detect the case where the major version is incorrect and there should be
+    REM no subsequent retries.
+    ECHO Downloading Dart SDK from Flutter engine %dart_required_version%... 1>&2
+    %powershell_executable% -ExecutionPolicy Bypass -NoProfile -Command "Unblock-File -Path '%update_dart_bin%'; & '%update_dart_bin%'; exit $LASTEXITCODE;"
+    IF "%ERRORLEVEL%" EQU "2" (
+      EXIT 1
+    )
+    IF "%ERRORLEVEL%" NEQ "0" (
+      ECHO Error: Unable to update Dart SDK. Retrying... 1>&2
+      timeout /t 5 /nobreak
+      GOTO :do_sdk_update_and_snapshot
+    )
+
+  :do_snapshot
+    IF EXIST "%FLUTTER_ROOT%\version" DEL "%FLUTTER_ROOT%\version"
+    IF EXIST "%FLUTTER_ROOT%\bin\cache\flutter.version.json" DEL "%FLUTTER_ROOT%\bin\cache\flutter.version.json"
+    ECHO: > "%cache_dir%\.dartignore"
+    ECHO Building flutter tool... 1>&2
+    PUSHD "%flutter_tools_dir%"
+
+    REM Makes changes to PUB_ENVIRONMENT only visible to commands within SETLOCAL/ENDLOCAL
+    SETLOCAL
+      IF "%CI%" == "true" GOTO on_bot
+      IF "%BOT%" == "true" GOTO on_bot
+      IF "%CONTINUOUS_INTEGRATION%" == "true" GOTO on_bot
+      IF "%CHROME_HEADLESS%" == "1" GOTO on_bot
+      GOTO not_on_bot
+      :on_bot
+        SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_bot
+      :not_on_bot
+      SET PUB_SUMMARY_ONLY=1
+      SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_install
+      IF "%PUB_CACHE%" == "" (
+        IF EXIST "%pub_cache_path%" SET PUB_CACHE=%pub_cache_path%
+      )
+
+      SET /A total_tries=10
+      SET /A remaining_tries=%total_tries%-1
+      :retry_pub_upgrade
+        ECHO Running pub upgrade... 1>&2
+        "%dart%" pub upgrade --suppress-analytics
+        IF "%ERRORLEVEL%" EQU "0" goto :upgrade_succeeded
+        ECHO Error (%ERRORLEVEL%): Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (%remaining_tries% tries left) 1>&2
+        timeout /t 5 /nobreak 2>NUL
+        SET /A remaining_tries-=1
+        IF "%remaining_tries%" EQU "0" GOTO upgrade_retries_exhausted
+        GOTO :retry_pub_upgrade
+      :upgrade_retries_exhausted
+        SET exit_code=%ERRORLEVEL%
+        ECHO Error: 'pub upgrade' still failing after %total_tries% tries. 1>&2
+        GOTO final_exit
+      :upgrade_succeeded
+    ENDLOCAL
+
+    POPD
+
+    REM Move the old snapshot - we can't just overwrite it as the VM might currently have it
+    REM memory mapped (e.g. on flutter upgrade), and deleting it might not work if the file
+    REM is in use. For downloading a new dart sdk the folder is moved, so we take the same
+    REM approach of moving the file here.
+    SET /A snapshot_path_suffix=1
+    :move_old_snapshot
+      IF EXIST "%snapshot_path_old%%snapshot_path_suffix%" (
+        SET /A snapshot_path_suffix+=1
+        GOTO move_old_snapshot
+      ) ELSE (
+        IF EXIST "%snapshot_path%" (
+          MOVE "%snapshot_path%" "%snapshot_path_old%%snapshot_path_suffix%" 2> NUL > NUL
+        )
+      )
+
+    IF "%FLUTTER_TOOL_ARGS%" == "" (
+      "%dart%" --verbosity=error --snapshot="%snapshot_path%" --snapshot-kind="app-jit" --packages="%flutter_tools_dir%\.dart_tool\package_config.json" --no-enable-mirrors "%script_path%" > NUL
+    ) else (
+      "%dart%" "%FLUTTER_TOOL_ARGS%" --verbosity=error --snapshot="%snapshot_path%" --snapshot-kind="app-jit" --packages="%flutter_tools_dir%\.dart_tool\package_config.json" "%script_path%" > NUL
+    )
+    IF "%ERRORLEVEL%" NEQ "0" (
+      ECHO Error: Unable to create dart snapshot for flutter tool. 1>&2
+      SET exit_code=%ERRORLEVEL%
+      GOTO :final_exit
+    )
+    >"%stamp_path%" ECHO %compilekey%
+
+    REM Try to delete any old snapshots now. Swallow any errors though.
+    DEL "%snapshot_path%.old*" 2> NUL > NUL
+
+  REM Exit Subroutine
+  EXIT /B
+
+:after_subroutine
+
+:final_exit
+  EXIT /B %exit_code%
diff --git a/flutter/bin/internal/shared.sh b/flutter/bin/internal/shared.sh
new file mode 100644
index 0000000000000000000000000000000000000000..75d9d3013eb2743cb73b1f9d3da5d264c3dd7249
--- /dev/null
+++ b/flutter/bin/internal/shared.sh
@@ -0,0 +1,265 @@
+#!/usr/bin/env bash
+# Copyright 2014 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# ---------------------------------- NOTE ---------------------------------- #
+#
+# Please keep the logic in this file consistent with the logic in the
+# `shared.bat` script in the same directory to ensure that Flutter & Dart continue
+# to work across all platforms!
+#
+# -------------------------------------------------------------------------- #
+
+set -e
+
+# Needed because if it is set, cd may print the path it changed to.
+unset CDPATH
+
+function pub_upgrade_with_retry {
+  local total_tries="10"
+  local remaining_tries=$((total_tries - 1))
+  while [[ "$remaining_tries" -gt 0 ]]; do
+    (cd "$FLUTTER_TOOLS_DIR" && "$DART" pub upgrade --suppress-analytics) && break
+    >&2 echo "Error: Unable to 'pub upgrade' flutter tool. Retrying in five seconds... ($remaining_tries tries left)"
+    remaining_tries=$((remaining_tries - 1))
+    sleep 5
+  done
+
+  if [[ "$remaining_tries" == 0 ]]; then
+    >&2 echo "Command 'pub upgrade' still failed after $total_tries tries, giving up."
+    return 1
+  fi
+  return 0
+}
+
+# Trap function for removing any remaining lock file at exit.
+function _rmlock () {
+  [ -n "$FLUTTER_UPGRADE_LOCK" ] && rm -rf "$FLUTTER_UPGRADE_LOCK"
+}
+
+# Determines which lock method to use, based on what is available on the system.
+# Returns a non-zero value if the lock was not acquired, zero if acquired.
+function _lock () {
+  if hash flock 2>/dev/null; then
+    flock --nonblock --exclusive 7 2>/dev/null
+  elif hash shlock 2>/dev/null; then
+    shlock -f "$1" -p $$
+  else
+    mkdir "$1" 2>/dev/null
+  fi
+}
+
+# Waits for an update lock to be acquired.
+#
+# To ensure that we don't simultaneously update Dart in multiple parallel
+# instances, we try to obtain an exclusive lock on this file descriptor (and
+# thus this script's source file) while we are updating Dart and compiling the
+# script. To do this, we try to use the command line program "flock", which is
+# available on many Unix-like platforms, in particular on most Linux
+# distributions. You give it a file descriptor, and it locks the corresponding
+# file, having inherited the file descriptor from the shell.
+#
+# Complicating matters, there are two major scenarios where this will not
+# work.
+#
+# The first is if the platform doesn't have "flock", for example on macOS. There
+# is not a direct equivalent, so on platforms that don't have flock, we fall
+# back to using trying to use the shlock command, and if that doesn't exist,
+# then we use mkdir as an atomic operation to create a lock directory. If mkdir
+# is able to create the directory, then the lock is acquired. To determine if we
+# have "flock" or "shlock" available, we use the "hash" shell built-in.
+#
+# The second complication is on network file shares. On NFS, to obtain an
+# exclusive lock you need a file descriptor that is open for writing. Thus, we
+# ignore errors from flock by redirecting all output to /dev/null, since users
+# will typically not care about errors from flock and are more likely to be
+# confused by them than helped. The "shlock" method doesn't work for network
+# shares, since it is PID-based. The "mkdir" method does work over NFS
+# implementations that support atomic directory creation (which is most of
+# them). The "schlock" and "flock" commands are more reliable than the mkdir
+# method, however, or we would use mkdir in all cases.
+#
+# The upgrade_flutter function calling _wait_for_lock is executed in a subshell
+# with a redirect that pipes the source of this script into file descriptor 7.
+# A flock lock is released when this subshell exits and file descriptor 7 is
+# closed. The mkdir lock is released via an exit trap from the subshell that
+# deletes the lock directory.
+function _wait_for_lock () {
+  FLUTTER_UPGRADE_LOCK="$FLUTTER_ROOT/bin/cache/.upgrade_lock"
+  local waiting_message_displayed
+  while ! _lock "$FLUTTER_UPGRADE_LOCK"; do
+    if [[ -z $waiting_message_displayed ]]; then
+      # Print with a return so that if the Dart code also prints this message
+      # when it does its own lock, the message won't appear twice. Be sure that
+      # the clearing printf below has the same number of space characters.
+      printf "Waiting for another flutter command to release the startup lock...\r" >&2;
+      waiting_message_displayed="true"
+    fi
+    sleep .1;
+  done
+  if [[ $waiting_message_displayed == "true" ]]; then
+    # Clear the waiting message so it doesn't overlap any following text.
+    printf "                                                                  \r" >&2;
+  fi
+  unset waiting_message_displayed
+  # If the lock file is acquired, make sure that it is removed on exit.
+  trap _rmlock INT TERM EXIT
+}
+
+# This function is always run in a subshell. Running the function in a subshell
+# is required to make sure any lock directory is cleaned up by the exit trap in
+# _wait_for_lock.
+function upgrade_flutter () (
+  mkdir -p "$FLUTTER_ROOT/bin/cache"
+
+  local revision="$(cd "$FLUTTER_ROOT"; git rev-parse HEAD)"
+  local compilekey="$revision:$FLUTTER_TOOL_ARGS"
+
+  # Invalidate cache if:
+  #  * SNAPSHOT_PATH is not a file, or
+  #  * STAMP_PATH is not a file, or
+  #  * STAMP_PATH is an empty file, or
+  #  * Contents of STAMP_PATH is not what we are going to compile, or
+  #  * pubspec.yaml last modified after pubspec.lock
+  if [[ ! -f "$SNAPSHOT_PATH" || \
+        ! -s "$STAMP_PATH" || \
+        "$(cat "$STAMP_PATH")" != "$compilekey" || \
+        "$FLUTTER_TOOLS_DIR/pubspec.yaml" -nt "$FLUTTER_TOOLS_DIR/pubspec.lock" ]]; then
+    # Waits for the update lock to be acquired. Placing this check inside the
+    # conditional allows the majority of flutter/dart installations to bypass
+    # the lock entirely, but as a result this required a second verification that
+    # the SDK is up to date.
+    _wait_for_lock
+
+    # A different shell process might have updated the tool/SDK.
+    if [[ -f "$SNAPSHOT_PATH" && -s "$STAMP_PATH" && "$(cat "$STAMP_PATH")" == "$compilekey" && "$FLUTTER_TOOLS_DIR/pubspec.yaml" -ot "$FLUTTER_TOOLS_DIR/pubspec.lock" ]]; then
+      exit $?
+    fi
+
+    # Fetch Dart...
+    rm -f "$FLUTTER_ROOT/version"
+    rm -f "$FLUTTER_ROOT/bin/cache/flutter.version.json"
+    touch "$FLUTTER_ROOT/bin/cache/.dartignore"
+    "$FLUTTER_ROOT/bin/internal/update_dart_sdk.sh"
+
+    >&2 echo Building flutter tool...
+
+    # Prepare packages...
+    if [[ "$CI" == "true" || "$BOT" == "true" || "$CONTINUOUS_INTEGRATION" == "true" || "$CHROME_HEADLESS" == "1" ]]; then
+      PUB_ENVIRONMENT="$PUB_ENVIRONMENT:flutter_bot"
+    else
+      export PUB_SUMMARY_ONLY=1
+    fi
+    export PUB_ENVIRONMENT="$PUB_ENVIRONMENT:flutter_install"
+    pub_upgrade_with_retry
+
+    # Move the old snapshot - we can't just overwrite it as the VM might currently have it
+    # memory mapped (e.g. on flutter upgrade). For downloading a new dart sdk the folder is moved,
+    # so we take the same approach of moving the file here.
+    SNAPSHOT_PATH_OLD="$SNAPSHOT_PATH.old"
+    if [ -f "$SNAPSHOT_PATH" ]; then
+      mv "$SNAPSHOT_PATH" "$SNAPSHOT_PATH_OLD"
+    fi
+
+    # Compile...
+    "$DART" --verbosity=error --disable-dart-dev $FLUTTER_TOOL_ARGS --snapshot="$SNAPSHOT_PATH" --snapshot-kind="app-jit" --packages="$FLUTTER_TOOLS_DIR/.dart_tool/package_config.json" --no-enable-mirrors "$SCRIPT_PATH" > /dev/null
+    echo "$compilekey" > "$STAMP_PATH"
+
+    # Delete any temporary snapshot path.
+    if [ -f "$SNAPSHOT_PATH_OLD" ]; then
+      rm -f "$SNAPSHOT_PATH_OLD"
+    fi
+  fi
+  # The exit here is extraneous since the function is run in a subshell, but
+  # this serves as documentation that running the function in a subshell is
+  # required to make sure any lock directory created by mkdir is cleaned up.
+  exit $?
+)
+
+# This function is intended to be executed by entrypoints (e.g. `//bin/flutter`
+# and `//bin/dart`). PROG_NAME and BIN_DIR should already be set by those
+# entrypoints.
+function shared::execute() {
+  export FLUTTER_ROOT="$(cd "${BIN_DIR}/.." ; pwd -P)"
+
+  # If present, run the bootstrap script first
+  BOOTSTRAP_PATH="$FLUTTER_ROOT/bin/internal/bootstrap.sh"
+  if [ -f "$BOOTSTRAP_PATH" ]; then
+    source "$BOOTSTRAP_PATH"
+  fi
+
+  FLUTTER_TOOLS_DIR="$FLUTTER_ROOT/packages/flutter_tools"
+  SNAPSHOT_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.snapshot"
+  STAMP_PATH="$FLUTTER_ROOT/bin/cache/flutter_tools.stamp"
+  SCRIPT_PATH="$FLUTTER_TOOLS_DIR/bin/flutter_tools.dart"
+  DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk"
+
+  DART="$DART_SDK_PATH/bin/dart"
+
+  # If running over git-bash, overrides the default UNIX executables with win32
+  # executables
+  case "$(uname -s)" in
+    MINGW* | MSYS* )
+      DART="$DART.exe"
+      ;;
+  esac
+
+  # Test if running as superuser – but don't warn if running within Docker or CI.
+  if [[ "$EUID" == "0" && ! -f /.dockerenv && "$CI" != "true" && "$BOT" != "true" && "$CONTINUOUS_INTEGRATION" != "true" ]]; then
+    >&2 echo "   Woah! You appear to be trying to run flutter as root."
+    >&2 echo "   We strongly recommend running the flutter tool without superuser privileges."
+    >&2 echo "  /"
+    >&2 echo "📎"
+  fi
+
+  # Test if Git is available on the Host
+  if ! hash git 2>/dev/null; then
+    >&2 echo "Error: Unable to find git in your PATH."
+    exit 1
+  fi
+  # Test if the flutter directory is a git clone (otherwise git rev-parse HEAD
+  # would fail)
+  if [[ ! -e "$FLUTTER_ROOT/.git" ]]; then
+    >&2 echo "Error: The Flutter directory is not a clone of the GitHub project."
+    >&2 echo "       The flutter tool requires Git in order to operate properly;"
+    >&2 echo "       to install Flutter, see the instructions at:"
+    >&2 echo "       https://flutter.dev/get-started"
+    exit 1
+  fi
+
+  # File descriptor 7 is prepared here so that we can use it with
+  # flock(1) in _lock() (see above).
+  #
+  # We use number 7 because it's a luckier number than 3; luck is
+  # important when making locks work reliably. Also because that way
+  # if anyone is redirecting other file descriptors there's less
+  # chance of a conflict.
+  #
+  # In any case, the file we redirect into this file descriptor is
+  # this very source file you are reading right now, because that's
+  # the only file we can truly guarantee exists, since we're running
+  # it. We don't use PROG_NAME because otherwise if you run `dart` and
+  # `flutter` simultaneously they'll end up using different lock files
+  # and will corrupt each others' downloads.
+  #
+  # SHARED_NAME itself is prepared by the caller script.
+  upgrade_flutter 7< "$SHARED_NAME"
+
+  BIN_NAME="$(basename "$PROG_NAME")"
+  case "$BIN_NAME" in
+    flutter*)
+      # FLUTTER_TOOL_ARGS aren't quoted below, because it is meant to be
+      # considered as separate space-separated args.
+      exec "$DART" --disable-dart-dev --packages="$FLUTTER_TOOLS_DIR/.dart_tool/package_config.json" $FLUTTER_TOOL_ARGS "$SNAPSHOT_PATH" "$@"
+      ;;
+    dart*)
+      exec "$DART" "$@"
+      ;;
+    *)
+      >&2 echo "Error! Executable name $BIN_NAME not recognized!"
+      exit 1
+      ;;
+  esac
+}
diff --git a/flutter/bin/internal/update_dart_sdk.ps1 b/flutter/bin/internal/update_dart_sdk.ps1
new file mode 100644
index 0000000000000000000000000000000000000000..9dbef7cf5c9ab7de714541cd343fd2be1980096f
--- /dev/null
+++ b/flutter/bin/internal/update_dart_sdk.ps1
@@ -0,0 +1,113 @@
+# Copyright 2014 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# ---------------------------------- NOTE ---------------------------------- #
+#
+# Please keep the logic in this file consistent with the logic in the
+# `update_dart_sdk.sh` script in the same directory to ensure that Flutter
+# continues to work across all platforms!
+#
+# -------------------------------------------------------------------------- #
+
+$ErrorActionPreference = "Stop"
+
+$progName = Split-Path -parent $MyInvocation.MyCommand.Definition
+$flutterRoot = (Get-Item $progName).parent.parent.FullName
+
+$cachePath = "$flutterRoot\bin\cache"
+$dartSdkPath = "$cachePath\dart-sdk"
+$dartSdkLicense = "$cachePath\LICENSE.dart_sdk_archive.md"
+$engineStamp = "$cachePath\engine-dart-sdk.stamp"
+$engineVersion = (Get-Content "$flutterRoot\bin\internal\engine.version")
+$engineRealm = (Get-Content "$flutterRoot\bin\internal\engine.realm")
+
+$oldDartSdkPrefix = "dart-sdk.old"
+
+# Make sure that PowerShell has expected version.
+$psMajorVersionRequired = 5
+$psMajorVersionLocal = $PSVersionTable.PSVersion.Major
+if ($psMajorVersionLocal -lt $psMajorVersionRequired) {
+    Write-Host "Flutter requires PowerShell $psMajorVersionRequired.0 or newer."
+    Write-Host "See https://flutter.dev/docs/get-started/install/windows for more."
+    Write-Host "Current version is $psMajorVersionLocal."
+    # Use exit code 2 to signal that shared.bat should exit immediately instead of retrying.
+    exit 2
+}
+
+if ((Test-Path $engineStamp) -and ($engineVersion -eq (Get-Content $engineStamp))) {
+    return
+}
+
+$dartSdkBaseUrl = $Env:FLUTTER_STORAGE_BASE_URL
+if (-not $dartSdkBaseUrl) {
+    $dartSdkBaseUrl = "https://storage.googleapis.com"
+}
+if ($engineRealm) {
+    $dartSdkBaseUrl = "$dartSdkBaseUrl/$engineRealm"
+}
+$dartZipName = "dart-sdk-windows-x64.zip"
+$dartSdkUrl = "$dartSdkBaseUrl/flutter_infra_release/flutter/$engineVersion/$dartZipName"
+
+if ((Test-Path $dartSdkPath) -or (Test-Path $dartSdkLicense)) {
+    # Move old SDK to a new location instead of deleting it in case it is still in use (e.g. by IntelliJ).
+    $oldDartSdkSuffix = 1
+    while (Test-Path "$cachePath\$oldDartSdkPrefix$oldDartSdkSuffix") { $oldDartSdkSuffix++ }
+
+    if (Test-Path $dartSdkPath) {
+        Rename-Item $dartSdkPath "$oldDartSdkPrefix$oldDartSdkSuffix"
+    }
+
+    if (Test-Path $dartSdkLicense) {
+        Rename-Item $dartSdkLicense "$oldDartSdkPrefix$oldDartSdkSuffix.LICENSE.md"
+    }
+}
+New-Item $dartSdkPath -force -type directory | Out-Null
+$dartSdkZip = "$cachePath\$dartZipName"
+
+Try {
+    Import-Module BitsTransfer
+    $ProgressPreference = 'SilentlyContinue'
+    Start-BitsTransfer -Source $dartSdkUrl -Destination $dartSdkZip -ErrorAction Stop
+}
+Catch {
+    Write-Host "Downloading the Dart SDK using the BITS service failed, retrying with WebRequest..."
+    # Invoke-WebRequest is very slow when the progress bar is visible - a 28
+    # second download can become a 33 minute download. Disable it with
+    # $ProgressPreference and then restore the original value afterwards.
+    # https://github.com/flutter/flutter/issues/37789
+    $OriginalProgressPreference = $ProgressPreference
+    $ProgressPreference = 'SilentlyContinue'
+    Invoke-WebRequest -Uri $dartSdkUrl -OutFile $dartSdkZip
+    $ProgressPreference = $OriginalProgressPreference
+}
+
+If (Get-Command 7z -errorAction SilentlyContinue) {
+    Write-Host "Expanding downloaded archive with 7z..."
+    # The built-in unzippers are painfully slow. Use 7-Zip, if available.
+    & 7z x $dartSdkZip "-o$cachePath" -bd | Out-Null
+} ElseIf (Get-Command 7za -errorAction SilentlyContinue) {
+    Write-Host "Expanding downloaded archive with 7za..."
+    # Use 7-Zip's standalone version 7za.exe, if available.
+    & 7za x $dartSdkZip "-o$cachePath" -bd | Out-Null
+} ElseIf (Get-Command Microsoft.PowerShell.Archive\Expand-Archive -errorAction SilentlyContinue) {
+    Write-Host "Expanding downloaded archive with PowerShell..."
+    # Use PowerShell's built-in unzipper, if available (requires PowerShell 5+).
+    $global:ProgressPreference='SilentlyContinue'
+    Microsoft.PowerShell.Archive\Expand-Archive $dartSdkZip -DestinationPath $cachePath
+} Else {
+    Write-Host "Expanding downloaded archive with Windows..."
+    # As last resort: fall back to the Windows GUI.
+    $shell = New-Object -com shell.application
+    $zip = $shell.NameSpace($dartSdkZip)
+    foreach($item in $zip.items()) {
+        $shell.Namespace($cachePath).copyhere($item)
+    }
+}
+
+Remove-Item $dartSdkZip
+$engineVersion | Out-File $engineStamp -Encoding ASCII
+
+# Try to delete all old SDKs and license files.
+Get-ChildItem -Path $cachePath | Where {$_.BaseName.StartsWith($oldDartSdkPrefix)} | Remove-Item -Recurse -ErrorAction SilentlyContinue
diff --git a/flutter/bin/internal/update_dart_sdk.sh b/flutter/bin/internal/update_dart_sdk.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8aed2f47861d730f2bd3ae30d4151401b7c01e9a
--- /dev/null
+++ b/flutter/bin/internal/update_dart_sdk.sh
@@ -0,0 +1,187 @@
+#!/usr/bin/env bash
+# Copyright 2014 The Flutter Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+
+# ---------------------------------- NOTE ---------------------------------- #
+#
+# Please keep the logic in this file consistent with the logic in the
+# `update_dart_sdk.ps1` script in the same directory to ensure that Flutter
+# continues to work across all platforms!
+#
+# -------------------------------------------------------------------------- #
+
+set -e
+
+FLUTTER_ROOT="$(dirname "$(dirname "$(dirname "${BASH_SOURCE[0]}")")")"
+
+DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk"
+DART_SDK_PATH_OLD="$DART_SDK_PATH.old"
+ENGINE_STAMP="$FLUTTER_ROOT/bin/cache/engine-dart-sdk.stamp"
+ENGINE_VERSION=`cat "$FLUTTER_ROOT/bin/internal/engine.version"`
+ENGINE_REALM=`cat "$FLUTTER_ROOT/bin/internal/engine.realm"`
+OS="$(uname -s)"
+
+if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; then
+  command -v curl > /dev/null 2>&1 || {
+    >&2 echo
+    >&2 echo 'Missing "curl" tool. Unable to download Dart SDK.'
+    case "$OS" in
+      Darwin)
+        >&2 echo 'Consider running "brew install curl".'
+        ;;
+      Linux)
+        >&2 echo 'Consider running "sudo apt-get install curl".'
+        ;;
+      *)
+        >&2 echo "Please install curl."
+        ;;
+    esac
+    echo
+    exit 1
+  }
+  command -v unzip > /dev/null 2>&1 || {
+    >&2 echo
+    >&2 echo 'Missing "unzip" tool. Unable to extract Dart SDK.'
+    case "$OS" in
+      Darwin)
+        echo 'Consider running "brew install unzip".'
+        ;;
+      Linux)
+        echo 'Consider running "sudo apt-get install unzip".'
+        ;;
+      *)
+        echo "Please install unzip."
+        ;;
+    esac
+    echo
+    exit 1
+  }
+
+  # `uname -m` may be running in Rosetta mode, instead query sysctl
+  if [ "$OS" = 'Darwin' ]; then
+    # Allow non-zero exit so we can do control flow
+    set +e
+    # -n means only print value, not key
+    QUERY="sysctl -n hw.optional.arm64"
+    # Do not wrap $QUERY in double quotes, otherwise the args will be treated as
+    # part of the command
+    QUERY_RESULT=$($QUERY 2>/dev/null)
+    if [ $? -eq 1 ]; then
+      # If this command fails, we're certainly not on ARM
+      ARCH='x64'
+    elif [ "$QUERY_RESULT" = '0' ]; then
+      # If this returns 0, we are also not on ARM
+      ARCH='x64'
+    elif [ "$QUERY_RESULT" = '1' ]; then
+      ARCH='arm64'
+    else
+      >&2 echo "'$QUERY' returned unexpected output: '$QUERY_RESULT'"
+      exit 1
+    fi
+    set -e
+  else
+    # On x64 stdout is "uname -m: x86_64"
+    # On arm64 stdout is "uname -m: aarch64, arm64_v8a"
+    case "$(uname -m)" in
+      x86_64)
+        ARCH="x64"
+        ;;
+      *)
+        ARCH="arm64"
+        ;;
+    esac
+  fi
+
+  case "$OS" in
+    Darwin)
+      DART_ZIP_NAME="dart-sdk-darwin-${ARCH}.zip"
+      IS_USER_EXECUTABLE="-perm +100"
+      ;;
+    Linux)
+      DART_ZIP_NAME="dart-sdk-linux-${ARCH}.zip"
+      IS_USER_EXECUTABLE="-perm /u+x"
+      ;;
+    MINGW* | MSYS* )
+      DART_ZIP_NAME="dart-sdk-windows-x64.zip"
+      IS_USER_EXECUTABLE="-perm /u+x"
+      ;;
+    *)
+      echo "Unknown operating system. Cannot install Dart SDK."
+      exit 1
+      ;;
+  esac
+
+  >&2 echo "Downloading $OS $ARCH Dart SDK from Flutter engine $ENGINE_VERSION..."
+
+  # Use the default find if possible.
+  if [ -e /usr/bin/find ]; then
+    FIND=/usr/bin/find
+  else
+    FIND=find
+  fi
+
+  DART_SDK_BASE_URL="${FLUTTER_STORAGE_BASE_URL:-https://storage.googleapis.com}${ENGINE_REALM:+/$ENGINE_REALM}"
+  DART_SDK_URL="$DART_SDK_BASE_URL/flutter_infra_release/flutter/$ENGINE_VERSION/$DART_ZIP_NAME"
+
+  # if the sdk path exists, copy it to a temporary location
+  if [ -d "$DART_SDK_PATH" ]; then
+    rm -rf "$DART_SDK_PATH_OLD"
+    mv "$DART_SDK_PATH" "$DART_SDK_PATH_OLD"
+  fi
+
+  # install the new sdk
+  rm -rf -- "$DART_SDK_PATH"
+  mkdir -m 755 -p -- "$DART_SDK_PATH"
+  DART_SDK_ZIP="$FLUTTER_ROOT/bin/cache/$DART_ZIP_NAME"
+
+  # Conditionally set verbose flag for LUCI
+  verbose_curl=""
+  if [[ -n "$LUCI_CI" ]]; then
+    verbose_curl="--verbose"
+  fi
+
+  curl ${verbose_curl} --retry 3 --continue-at - --location --output "$DART_SDK_ZIP" "$DART_SDK_URL" 2>&1 || {
+    curlExitCode=$?
+    # Handle range errors specially: retry again with disabled ranges (`--continue-at -` argument)
+    # When this could happen:
+    # - missing support of ranges in proxy servers
+    # - curl with broken handling of completed downloads
+    #   This is not a proper fix, but doesn't require any user input
+    # - mirror of flutter storage without support of ranges
+    #
+    # 33  HTTP range error. The range "command" didn't work.
+    # https://man7.org/linux/man-pages/man1/curl.1.html#EXIT_CODES
+    if [ $curlExitCode != 33 ]; then
+      return $curlExitCode
+    fi
+    curl ${verbose_curl} --retry 3 --location --output "$DART_SDK_ZIP" "$DART_SDK_URL" 2>&1
+  } || {
+    >&2 echo
+    >&2 echo "Failed to retrieve the Dart SDK from: $DART_SDK_URL"
+    >&2 echo "If you're located in China, please see this page:"
+    >&2 echo "  https://flutter.dev/community/china"
+    >&2 echo
+    rm -f -- "$DART_SDK_ZIP"
+    exit 1
+  }
+  unzip -o -q "$DART_SDK_ZIP" -d "$FLUTTER_ROOT/bin/cache" || {
+    >&2 echo
+    >&2 echo "It appears that the downloaded file is corrupt; please try again."
+    >&2 echo "If this problem persists, please report the problem at:"
+    >&2 echo "  https://github.com/flutter/flutter/issues/new?template=1_activation.yml"
+    >&2 echo
+    rm -f -- "$DART_SDK_ZIP"
+    exit 1
+  }
+  rm -f -- "$DART_SDK_ZIP"
+  $FIND "$DART_SDK_PATH" -type d -exec chmod 755 {} \;
+  $FIND "$DART_SDK_PATH" -type f $IS_USER_EXECUTABLE -exec chmod a+x,a+r {} \;
+  echo "$ENGINE_VERSION" > "$ENGINE_STAMP"
+
+  # delete any temporary sdk path
+  if [ -d "$DART_SDK_PATH_OLD" ]; then
+    rm -rf "$DART_SDK_PATH_OLD"
+  fi
+fi
diff --git a/flutter/bin/internal/usbmuxd.version b/flutter/bin/internal/usbmuxd.version
new file mode 100644
index 0000000000000000000000000000000000000000..66ab87775f3b75592b80b89b854a2c4332a22bd0
--- /dev/null
+++ b/flutter/bin/internal/usbmuxd.version
@@ -0,0 +1 @@
+c7d7d1a03f65a27be2eddb13d1f2b0c0e7a60ec6
diff --git a/flutter/dartdoc_options.yaml b/flutter/dartdoc_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f73d4570c3fec37a3143b7371da704f105312daa
--- /dev/null
+++ b/flutter/dartdoc_options.yaml
@@ -0,0 +1,40 @@
+# This file is used by dartdoc when generating API documentation for Flutter.
+dartdoc:
+  # Before you can run dartdoc, the snippets tool needs to be
+  # activated with "pub global activate snippets <version>"
+  # The dev/bots/docs.sh script does this automatically.
+  tools:
+    snippet:
+      command: ["bin/cache/dart-sdk/bin/dart", "pub", "global", "run", "snippets", "--output-directory=doc/snippets", "--type=snippet"]
+      description: "Creates sample code documentation output from embedded documentation samples."
+    sample:
+      command: ["bin/cache/dart-sdk/bin/dart", "pub", "global", "run", "snippets", "--output-directory=doc/snippets", "--type=sample"]
+      description: "Creates full application sample code documentation output from embedded documentation samples."
+    dartpad:
+      command: ["bin/cache/dart-sdk/bin/dart", "pub", "global", "run", "snippets", "--output-directory=doc/snippets", "--type=dartpad"]
+      description: "Creates full application sample code documentation output from embedded documentation samples and displays it in an embedded DartPad."
+  errors:
+    # Default errors of dartdoc:
+    - duplicate-file
+    - invalid-parameter
+    - no-defining-library-found
+    - tool-error
+    - unresolved-export
+    # Warnings that are elevated to errors:
+    - ambiguous-doc-reference
+    - ambiguous-reexport
+    - broken-link
+    - category-order-gives-missing-package-name
+    - deprecated
+    - ignored-canonical-for
+    - missing-from-search-index
+    - no-canonical-found
+    - no-documentable-libraries
+    - no-library-level-docs
+    - not-implemented
+    - orphaned-file
+    - reexported-private-api-across-packages
+    # - unknown-directive  # Disabled due to https://github.com/dart-lang/dartdoc/issues/2353
+    - unknown-file
+    - unknown-macro
+    - unresolved-doc-reference
diff --git a/flutter/dev/README.md b/flutter/dev/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e48142ead6081e5b5dbd59b721ddf92b413719bb
--- /dev/null
+++ b/flutter/dev/README.md
@@ -0,0 +1,7 @@
+This directory contains tools and resources that the Flutter team uses
+during the development of the framework. The tools in this directory
+should not be necessary for developing Flutter applications, though of
+course, they may be interesting if you are curious.
+
+The tests in this directory are run in the `framework_tests_misc-*`
+shards.
diff --git a/flutter/dev/a11y_assessments/.gitignore b/flutter/dev/a11y_assessments/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..24476c5d1eb55824c76d8b01a3965f94abad1ef8
--- /dev/null
+++ b/flutter/dev/a11y_assessments/.gitignore
@@ -0,0 +1,44 @@
+# 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
+.packages
+.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/flutter/dev/a11y_assessments/.metadata b/flutter/dev/a11y_assessments/.metadata
new file mode 100644
index 0000000000000000000000000000000000000000..f35b49906d8e501a3fa58d205c72509a16aef063
--- /dev/null
+++ b/flutter/dev/a11y_assessments/.metadata
@@ -0,0 +1,45 @@
+# 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: "b9c3f1f74c075a1766fd74418b5d79f528cf8c74"
+  channel: "master"
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+  platforms:
+    - platform: root
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: android
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: ios
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: linux
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: macos
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: web
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+    - platform: windows
+      create_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+      base_revision: b9c3f1f74c075a1766fd74418b5d79f528cf8c74
+
+  # 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/flutter/dev/a11y_assessments/README.md b/flutter/dev/a11y_assessments/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..1f8a64cafb98302a69570db869d7e22d23b1ab21
--- /dev/null
+++ b/flutter/dev/a11y_assessments/README.md
@@ -0,0 +1,3 @@
+# a11y_assessments
+
+An application to conduct accessibility assessments.
diff --git a/flutter/dev/a11y_assessments/analysis_options.yaml b/flutter/dev/a11y_assessments/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f04c6cf0f30d4f8306eabe5dfd00f2a4c902b838
--- /dev/null
+++ b/flutter/dev/a11y_assessments/analysis_options.yaml
@@ -0,0 +1 @@
+include: ../../analysis_options.yaml
diff --git a/flutter/dev/a11y_assessments/pubspec.yaml b/flutter/dev/a11y_assessments/pubspec.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..c5670ebb97cc171473c84f53b1d697280feef170
--- /dev/null
+++ b/flutter/dev/a11y_assessments/pubspec.yaml
@@ -0,0 +1,38 @@
+name: a11y_assessments
+description: A new Flutter project
+
+environment:
+  sdk: '>=3.2.0-22.0.dev <4.0.0'
+
+dependencies:
+  flutter:
+    sdk: flutter
+
+  characters: 1.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  collection: 1.18.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  material_color_utilities: 0.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  meta: 1.10.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  vector_math: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  web: 0.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+
+dev_dependencies:
+  flutter_test:
+    sdk: flutter
+
+  async: 2.11.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  boolean_selector: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  clock: 1.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  fake_async: 1.3.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  matcher: 0.12.16 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  path: 1.8.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  source_span: 1.10.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  stack_trace: 1.11.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  stream_channel: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  string_scanner: 1.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  term_glyph: 1.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+  test_api: 0.6.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
+
+flutter:
+  uses-material-design: true
+
+# PUBSPEC CHECKSUM: dc9e
diff --git a/flutter/dev/analysis_options.yaml b/flutter/dev/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1a940d0a68e082fa9a042d6e73176b104bf8b5f1
--- /dev/null
+++ b/flutter/dev/analysis_options.yaml
@@ -0,0 +1,11 @@
+include: ../analysis_options.yaml
+
+linter:
+  rules:
+    avoid_print: false # We use prints as debugging tools here a lot.
+
+    # Tests try to throw and catch things in exciting ways all the time, so
+    # we disable these lints for the tests.
+    only_throw_errors: false
+    avoid_catching_errors: false
+    avoid_catches_without_on_clauses: false
diff --git a/flutter/dev/automated_tests/README.md b/flutter/dev/automated_tests/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..920beab9b50c7e3beb7c6b7ec32f7f384b70de86
--- /dev/null
+++ b/flutter/dev/automated_tests/README.md
@@ -0,0 +1,2 @@
+This is a fake package for use by automated testing.
+For example, the `flutter_tools` package uses this to test `flutter test`.
diff --git a/flutter/examples/.clang-format b/flutter/examples/.clang-format
new file mode 100644
index 0000000000000000000000000000000000000000..3b08f9ba04b4af577bd8aee267da0a1644116a80
--- /dev/null
+++ b/flutter/examples/.clang-format
@@ -0,0 +1,5 @@
+BasedOnStyle: Google
+---
+Language: Cpp
+DerivePointerAlignment: false
+PointerAlignment: Left
diff --git a/flutter/examples/README.md b/flutter/examples/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..5620ebff901d2ccab5a5bc6c6959f8d48e946115
--- /dev/null
+++ b/flutter/examples/README.md
@@ -0,0 +1,40 @@
+Flutter Examples
+================
+
+This directory contains several examples of using Flutter. To run an example,
+use `flutter run` inside that example's directory. See the [getting started
+guide](https://flutter.dev/getting-started/) to install the `flutter` tool.
+
+For additional samples, see the
+[`flutter/samples`](https://github.com/flutter/samples) repo.
+
+Available examples include:
+
+- **Hello, world** The [hello world app](hello_world) is a minimal Flutter app
+  that shows the text "Hello, world!"
+
+- **Flutter gallery** The flutter gallery app no longer lives in this repo.
+  Please see the [gallery repo](https://github.com/flutter/gallery).
+
+- **Layers** The [layers vignettes](layers) show how to use the various layers
+  in the Flutter framework. For details, see the [layers
+  README](layers/README.md).
+
+- **Platform Channel** The [platform channel app](platform_channel) demonstrates
+  how to connect a Flutter app to platform-specific APIs. For documentation, see
+  <https://flutter.dev/platform-channels/>.
+
+- **Platform Channel Swift** The [platform channel swift
+  app](platform_channel_swift) is the same as [platform
+  channel](platform_channel) but the iOS version is in Swift and there is no
+  Android version.
+
+## Notes
+
+Note on Gradle wrapper files in `.gitignore`:
+
+Gradle wrapper files should normally be checked into source control. The example
+projects don't do that to avoid having several copies of the wrapper binary in
+the Flutter repo. Instead, the Gradle wrapper is injected by Flutter tooling,
+and the wrapper files are .gitignore'd to avoid making the Flutter repository
+dirty as a side effect of running the examples.
diff --git a/flutter/examples/flutter_gallery.readme b/flutter/examples/flutter_gallery.readme
new file mode 100644
index 0000000000000000000000000000000000000000..5be549509b821d58030425ee26e75344e2a65dd9
--- /dev/null
+++ b/flutter/examples/flutter_gallery.readme
@@ -0,0 +1,4 @@
+The Flutter Gallery sample application that used to live in
+this /examples/ directory has moved, and is now located here:
+
+https://github.com/flutter/gallery
diff --git a/flutter/flutter_console.bat b/flutter/flutter_console.bat
new file mode 100644
index 0000000000000000000000000000000000000000..e88b8e7f15aca18f3063a3138e3710b303505368
--- /dev/null
+++ b/flutter/flutter_console.bat
@@ -0,0 +1,38 @@
+@ECHO off
+REM Copyright 2014 The Flutter Authors. All rights reserved.
+REM Use of this source code is governed by a BSD-style license that can be
+REM found in the LICENSE file.
+
+TITLE Flutter Console
+
+echo.
+echo         ######## ##       ##     ## ######## ######## ######## ########
+echo         ##       ##       ##     ##    ##       ##    ##       ##     ##
+echo         ##       ##       ##     ##    ##       ##    ##       ##     ##
+echo         ######   ##       ##     ##    ##       ##    ######   ########
+echo         ##       ##       ##     ##    ##       ##    ##       ##   ##
+echo         ##       ##       ##     ##    ##       ##    ##       ##    ##
+echo         ##       ########  #######     ##       ##    ######## ##     ##
+echo.
+echo.
+
+echo  WELCOME to the Flutter Console.
+echo  ===============================================================================
+echo.
+echo  Use the console below this message to interact with the "flutter" command.
+echo  Run "flutter doctor" to check if your system is ready to run Flutter apps.
+echo  Run "flutter create <app_name>" to create a new Flutter project.
+echo.
+echo  Run "flutter help" to see all available commands.
+echo.
+echo  Want to use an IDE to interact with Flutter? https://flutter.dev/ide-setup/
+echo.
+echo  Want to run the "flutter" command from any Command Prompt or PowerShell window?
+echo  Add Flutter to your PATH: https://flutter.dev/setup-windows/#update-your-path
+echo.
+echo  ===============================================================================
+
+REM "%~dp0" is the directory of this file including trailing backslash
+SET PATH=%~dp0bin;%PATH%
+
+CALL cmd /K "@echo off & cd %USERPROFILE% & echo on"
diff --git a/flutter/packages/analysis_options.yaml b/flutter/packages/analysis_options.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3f0e82867e7eaa08f89a783d93d41a1496bf07db
--- /dev/null
+++ b/flutter/packages/analysis_options.yaml
@@ -0,0 +1,9 @@
+# Take our settings from the repo's main analysis_options.yaml file, and include
+# additional rules that are specific to production code.
+
+include: ../analysis_options.yaml
+
+linter:
+  rules:
+    - public_member_api_docs # see https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#documentation-dartdocs-javadocs-etc
+    - no_runtimeType_toString # use objectRuntimeType from package:foundation
diff --git a/server/initDB.py b/server/initDB.py
new file mode 100644
index 0000000000000000000000000000000000000000..b7fe1bcb8f0bc02f45bbd344eb77b25e82d9ff97
--- /dev/null
+++ b/server/initDB.py
@@ -0,0 +1,13 @@
+
+from pymongo import MongoClient
+
+uri = "mongodb+srv://icemapcluster.i02epob.mongodb.net/?authSource=%24external&authMechanism=MONGODB-X509&retryWrites=true&w=majority"
+client = MongoClient(uri,
+                     tls=True,
+                     tlsCertificateKeyFile='<./X509-cert-2722575229130410888.pem>',
+                     server_api=ServerApi('1'))
+
+db = client['IceMapDatabase']
+collection = db['GeoDataCollection']
+doc_count = collection.count_documents({})
+print(doc_count)