tree a1a146ab66bf1581520e5081ee724f7a7d527e03
parent 7188c3e620f13d53e28d293fbf1ac4c498999942
author Eilidh Southren <esouthren@google.com> 1673869871 +0000
committer GitHub <noreply@github.com> 1673869871 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJjxTovCRBK7hj4Ov3rIwAAdJEIAG5yYLOyWj2M11uEIl+GF477
 jRWhvlH7X6GFhQw/Pz3U1+ZojdjReyWyW3U+9xEwNb4y0ixvE0BYMjDY6l+MbrwB
 4zffoAe72GMWDSuFCW6MWqIOaeUwedjZ+2SMrAl+jdST0yMBPO1DqEYL4+qff9ZR
 7Uu+xC9Sqkq6nHmgDWp54R8f/hPbCeqX/G3/UuoSelEcMFnjNQogxbhOzUje+3mx
 q/MLwP82vnYJkHEySnpgRu7g4nYEpkugeiU3IaZ3ap4uRmRmbU/sLJAx+rhQ9hql
 tdkOw9Co7CuwezRl6W+Ae3+wG/XMvSnSOj+156QHnw26ZQDaSifKxeO/Je7C4AY=
 =9tEk
 -----END PGP SIGNATURE-----
 

M3 Button padding adjustments (#118449)

* init scaled changes

* add correct padding values for M3

* revert unneeded change

* Update packages/flutter/lib/src/material/text_button.dart

Co-authored-by: Pierre-Louis <6655696+guidezpl@users.noreply.github.com>

* Update packages/flutter/lib/src/material/text_button.dart

Co-authored-by: Pierre-Louis <6655696+guidezpl@users.noreply.github.com>

* comment fixes

* test update

* docstring fixes

* e44a0de4c Roll Fuchsia Mac SDK from JLTTlcNPJeScjSO2B... to FeFYsNPy64-PEXPer... (flutter/engine#38558) (#117779)

* Roll Plugins from e11cb245bb8e to 2d66f30e5825 (2 revisions) (#117781)

* 417b37009 Roll Flutter from ae292cc4e5e4 to 17482fd425ee (28 revisions) (flutter/plugins#6889)

* 2d66f30e5 [webview_flutter_web] Adds auto registration of the `WebViewPlatform` implementation (flutter/plugins#6886)

* 4dd8a694f Roll Skia from cc3e0cd0a743 to c776239198f7 (1 revision) (flutter/engine#38560) (#117783)

* 3460f349b [fuchsia] Set presentation interval (flutter/engine#38549) (#117785)

* Roll Flutter Engine from 3460f349b01d to 1752b5b84680 (2 revisions) (#117788)

* 332c0a2f2 Roll Skia from c776239198f7 to 13435162b783 (1 revision) (flutter/engine#38561)

* 1752b5b84 Roll Dart SDK from 7f154f949aaf to fa6cf7241184 (2 revisions) (flutter/engine#38563)

* a63bd854a [fuchsia] Add trace flow for Flatland::Present (flutter/engine#38565) (#117790)

* Roll Flutter Engine from a63bd854ac5a to 5713a216076f (2 revisions) (#117795)

* e012dc825 [Windows] Add engine builder to simplify tests (flutter/engine#38546)

* 5713a2160 Revert "[web] Don't overwrite editing state with semantic updates (#38271)" (flutter/engine#38562)

* Roll Flutter Engine from 5713a216076f to 780082203ea9 (2 revisions) (#117797)

* fd94b04b1 [Impeller Scene] Import skinned mesh vertex data (flutter/engine#38554)

* 780082203 Roll Fuchsia Linux SDK from gnyHyot4AZp7HZgUI... to KCm_e3N4gosNuY4IW... (flutter/engine#38568)

* 9095f7a8b Roll Dart SDK from fa6cf7241184 to 224ac5ed9c66 (1 revision) (flutter/engine#38569) (#117799)

* 0118b461b Roll Fuchsia Mac SDK from FeFYsNPy64-PEXPer... to 2lzQU8FEjR5AkOr4d... (flutter/engine#38571) (#117800)

* e03d7c8bb Roll Skia from 13435162b783 to 9e8f31e3020c (3 revisions) (flutter/engine#38572) (#117802)

* af6078b5f Roll Skia from 9e8f31e3020c to 486deb23bc2a (2 revisions) (flutter/engine#38574) (#117804)

* 7e5cc7bb6 Roll Dart SDK from 224ac5ed9c66 to 9f0d8b9f20da (1 revision) (flutter/engine#38575) (#117805)

* d4a04a538 Roll Fuchsia Linux SDK from KCm_e3N4gosNuY4IW... to IApTRqW8UUSWAOcqA... (flutter/engine#38578) (#117817)

* b202b3db9 Roll Flutter from 17482fd425ee to d2127ad344e8 (14 revisions) (flutter/plugins#6892) (#117824)

* Roll Flutter Engine from d4a04a538050 to 9153966bcb06 (2 revisions) (#117830)

* 53806fa1e Roll Fuchsia Mac SDK from 2lzQU8FEjR5AkOr4d... to Bewt-eq7gNu6sU_Ob... (flutter/engine#38579)

* 9153966bc [fuchsia] Bump the target API level to 11 (flutter/engine#38544)

* b9bf51d16 Roll Dart SDK from 9f0d8b9f20da to 881c0b56a1f7 (1 revision) (flutter/engine#38580) (#117832)

* Roll Flutter Engine from b9bf51d16f25 to f6ad9b6d00e3 (2 revisions) (#117834)

* 4b38736e7 [Impeller Scene] Import materials, load embedded textures (flutter/engine#38577)

* f6ad9b6d0 Roll Fuchsia Linux SDK from IApTRqW8UUSWAOcqA... to CXcPP_JZKQbSu2eIP... (flutter/engine#38581)

* 932591ec0 Roll Fuchsia Linux SDK from CXcPP_JZKQbSu2eIP... to PkN8FdI4aC9z7W4mI... (flutter/engine#38584) (#117840)

* 3d8c5ef10 Roll Fuchsia Linux SDK from PkN8FdI4aC9z7W4mI... to OOL-jWRElkQ2P3vJz... (flutter/engine#38585) (#117846)

* Roll Flutter Engine from 3d8c5ef1060c to a7decc3e459b (2 revisions) (#117856)

* 3470fa848 Roll Skia from 486deb23bc2a to a31d9c3b4583 (2 revisions) (flutter/engine#38586)

* a7decc3e4 Roll Skia from a31d9c3b4583 to 01aeec883a43 (4 revisions) (flutter/engine#38587)

* 0a2029cf3 Roll Fuchsia Linux SDK from OOL-jWRElkQ2P3vJz... to AE3lAqTc632VsY14L... (flutter/engine#38588) (#117858)

* 5fe7d5b4e Roll Skia from 01aeec883a43 to 2ffa04c2f77c (2 revisions) (flutter/engine#38591) (#117863)

* e5d605b3a Roll Skia from 2ffa04c2f77c to 269dce7e16bb (1 revision) (flutter/engine#38592) (#117865)

* 71c5f1704 Roll Fuchsia Linux SDK from AE3lAqTc632VsY14L... to UAq0LO56_kbgA_BUQ... (flutter/engine#38593) (#117868)

* 472e34cbb Roll Skia from 269dce7e16bb to fde37f5986fd (1 revision) (flutter/engine#38594) (#117869)

* Roll Plugins from b202b3db98dc to e85f8ac1502d (3 revisions) (#117875)

* 035d85e62 Roll Flutter from d2127ad344e8 to 120058fd3ded (15 revisions) (flutter/plugins#6896)

* 80532e0ba Roll Flutter from 120058fd3ded to 0196e6050b75 (3 revisions) (flutter/plugins#6901)

* e85f8ac15 Roll Flutter from 0196e6050b75 to b938dc13df32 (7 revisions) (flutter/plugins#6908)

* [flutter_tools] timeline_test.dart flaky (#116667)

* contains name instead of remove last

* fix expect

* remove and expect on elements

* delete unused code

* 7e51aef0a Roll Skia from fde37f5986fd to 809e328ed55c (1 revision) (flutter/engine#38596) (#117874)

* Updated to tokens v0.150. (#117350)

* Updated to tokens v0.150.

* Updated with a reverted list_tile.dart.

* Simplify null check. (#117026)

* Simplify null check.

* Simplify null check.

* Simplify null check.

* Fix.

* Roll Flutter Engine from 7e51aef0a1be to 1d2ba73d1059 (9 revisions) (#117923)

* 3e1b0dcb2 Roll Dart SDK from 881c0b56a1f7 to 617e70c95f5b (1 revision) (flutter/engine#38597)

* 8b17efed8 Roll Fuchsia Linux SDK from UAq0LO56_kbgA_BUQ... to LA5kW39Gec7KvvM7x... (flutter/engine#38598)

* 27960a700 [Impeller Scene] Import animation data (flutter/engine#38583)

* b5acb2099 Roll Skia from 809e328ed55c to 697f9b541a0e (1 revision) (flutter/engine#38599)

* dd0335b34 Roll Skia from 697f9b541a0e to 15d36b15bca1 (1 revision) (flutter/engine#38601)

* adda2e80c [Impeller Scene] Animation binding and playback (flutter/engine#38595)

* 71a296d53 Roll Fuchsia Linux SDK from LA5kW39Gec7KvvM7x... to rPo4_TYHCtkoOfRup... (flutter/engine#38607)

* bde8d4524 Implement ITextProvider and ITextRangeProvider for UIA (flutter/engine#38538)

* 1d2ba73d1 [Windows] Make the engine own the cursor plugin (flutter/engine#38570)

* Reland "Remove single-view assumption from ScrollPhysics (#117503)" (#117916)

This reverts commit c956121ac098b91061bfc0a93c930121ff3279ba.

* Minor documentation fix on BorderRadiusDirectional.zero (#117661)

* fix typos (#117592)

* c0b3f8fce Make `AccessibilityBridge` a `AXPlatformTreeManager` (flutter/engine#38610) (#117931)

* Add convenience constructors for SliverList (#116605)

* init

* lint

* add the other two slivers

* fix lint

* add test for sliverlist.separated

* add3 more

* fix lint and tests

* remove trailing spaces

* remove trailing spaces 2

* fix lint

* fix lint again

* 2213b80dd [Impeller Scene] Use std::chrono for animation durations (flutter/engine#38606) (#117935)

* Reland "Add support for double tap and drag for text selection #109573" (#117502)

* Revert "Revert "Add support for double tap and drag for text selection (#109573)" (#117497)"

This reverts commit 39fa0117a919bd401c4c8734c97ddb46fbc45cb7.

* Allow TapAndDragGestureRecognizer to accept pointer events from any devices -- the TapGestureRecognizer it replaces was previously doing this

Co-authored-by: Renzo Olivares <roliv@google.com>

* == override parameters are non-nullable (#117839)

* Fix the message strings for xcodeMissing and xcodeIncomplete (#117922)

* Add macOS to xcodeMissing and xcodeIncomplete

* And unit test

* 32c468507 Roll quiver to 3.2.1 (flutter/engine#38617) (#117942)

* Send text direction in selection rects (#117436)

* Correctly propagate verbosity to subtasks in flutter.gradle (#117897)

* Correctly propagate verbosity to subtasks in flutter.gradle

* Add test

* Revert accidental changes

* Fix copyright year

* Fix imports

* Roll Plugins from e85f8ac1502d to f9dda6a27b79 (3 revisions) (#117972)

* 6df3ef23f [in_app_pur] Add screenshots to pubspec.yaml (flutter/plugins#6540)

* 42f8093c2 [google_maps_flutter] Fixed minor syntax error in the README.md (flutter/plugins#6909)

* f9dda6a27 [image_picker_ios] Fix FLTPHPickerSaveImageToPathOperation property attributes (flutter/plugins#6890)

* [flutter_tools] Fix null check in parsing web plugin from pubspec.yaml (#117939)

* fix null check in parsing web plugin yaml

* revert accidental diff

* remove comment

* roll packages (#117940)

* roll packages (#118001)

* [Android] Increase timeout duration for spell check integration test (#117989)

* Add timeout

* Add library directive

* Add comment, remove testing only changes

* Roll Flutter Engine from 32c468507b32 to cdd3bf29e27a (8 revisions) (#118014)

* 22f872d5e Roll Dart SDK from 617e70c95f5b to f6dcb8b0b5d3 (7 revisions) (flutter/engine#38626)

* c5e0f9ed0 Roll Dart SDK from f6dcb8b0b5d3 to 0b064bc49557 (1 revision) (flutter/engine#38630)

* 398f5d3bd Roll Skia from 15d36b15bca1 to 9423a8a0fc2d (37 revisions) (flutter/engine#38631)

* ebf01dcdb Update FlutterPlatformNodeDelegate (flutter/engine#38615)

* d7dbe5bf3 Roll Skia from 9423a8a0fc2d to 60e4a4a27375 (5 revisions) (flutter/engine#38633)

* 67440ccd5 fix roll (flutter/engine#38635)

* 87bdde8fe Fix build using VS 17.4's C++ STL (flutter/engine#38614)

* cdd3bf29e make DisplayListFlags constexpr throughout (flutter/engine#38649)

* 60515762e [Impeller Scene] Compute joint transforms and apply them to skinned meshes (flutter/engine#38628) (#118016)

* 35b7dee32 [Impeller] Set adaptive tolerance when rendering FillPathGeometry (flutter/engine#38497) (#118017)

* b9b0193ea Roll Skia from 60e4a4a27375 to 158d51b34caa (19 revisions) (flutter/engine#38654) (#118018)

* a01548f5f [Impeller Scene] Fix material/vertex color overlapping (flutter/engine#38653) (#118027)

* Roll Plugins from f9dda6a27b79 to 320461910156 (2 revisions) (#118040)

* 365332fe1 Roll Flutter from b938dc13df32 to 231855fc87d0 (19 revisions) (flutter/plugins#6913)

* 320461910 Update image_picker_ios CODEOWNER (flutter/plugins#6891)

* 072a9ca37 Add `TextProvider` and `TextEdit` patterns to `AXPlatformNodeWin` (flutter/engine#38646) (#118039)

* bb4015269 Roll Skia from 158d51b34caa to ecd3a2f865ba (1 revision) (flutter/engine#38659) (#118042)

* Avoid using `TextAffinity` in `TextBoundary` (#117446)

* Avoid affinity like the plague

* ignore lint

* clean up

* fix test

* review

* Move wordboundary to text painter

* docs

* fix tests

* 74861f369 Reduce the size of Overlay FlutterImageView in HC mode (flutter/engine#38393) (#118048)

* 5bd90d6e7 Consider more roles as text (flutter/engine#38645) (#118049)

* [EMPTY] Commit to refresh the tree that is currently red (#118062)

* Remove doc reference to the deprecated ui.FlutterWindow API (#118064)

* Fix `flutter update-packages` regression by fixing parameters in "pub get" runner (#116687)

* Make pub get runner respect printProgress and retry parameters

* Fix typo

* Add regression test

* Improve test

* Fix implementation and test

* Test to fix flutter_drone tests

* Revert test

* Attempt #2 to fix flutter_drone tests

* Revert attempt

* Hack: Force printProgress to debug Windows tests

* Use ProcessUtils.run to avoid dangling stdout and stderr

* Update documentation

* Clean up retry argument

* Adding 'is' to list of kotlin reserved keywords (#116299)

Co-authored-by: Gray Mackall <mackall@google.com>

* Added expandIconColor property on ExpansionPanelList Widget (#115950)

* Create expanIconColor doc template

* Add expandIconColor property to ExpansionPanelList

* Added tests for expandIconColor on ExpansionPanelList & radio

* Removed trailing spaces

* Update docstring (#118072)

Co-authored-by: a-wallen <stephenwallen@google.com>

* Fix out-of-sync ExpansionPanel animation (#105024)

* Increase minimum height of headerWidget in ExpansionPanel to smooth the animation.

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Add regression tests that check for equal height of header elements in ExpansionPanel.

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Clarify comment.

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Reduce padding in ExpandIcon to 12px s.t. header height is 48px.

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Update testcases to new header height (56px -> 48px).

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Test for header height equal to 48px.

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Change issue number to link in comment

* Add periods to comments

Signed-off-by: Morris Kurz <morriskurz@gmail.com>

* Roll Plugins from 320461910156 to 276cfd4b212d (2 revisions) (#118099)

* 3a6f63bed Roll Flutter from 231855fc87d0 to 43b912090224 (11 revisions) (flutter/plugins#6918)

* 276cfd4b2 [shared_preferences] Convert macOS to Pigeon (flutter/plugins#6914)

* 33d7f8a1b Remove single view assumptions from `window.dart` (flutter/engine#38453) (#118069)

* InteractiveViewer parameter to return to pre-3.3 trackpad/Magic Mouse behaviour (#114280)

* trackpadPanShouldActAsZoom

* Address feedback

* Move constant, add blank lines

* 0a0e3d205 Roll Flutter from 43b912090224 to 507062032fa4 (9 revisions) (flutter/plugins#6919) (#118183)

* Roll Flutter Engine from 33d7f8a1b307 to 03609b420beb (6 revisions) (#118125)

* c58254702 SkBudgeted -> skgpu::Budgeted (flutter/engine#38660)

* 3d9214ace Bump actions/checkout from 3.1.0 to 3.2.0 (flutter/engine#38390)

* a4775c7a7 Remove strict equality check for SkMatrix comparison (flutter/engine#38665)

* 046012e8e [fuchsia] Enable CI for branches like `fuchsia_r51a`. (flutter/engine#38683)

* cda410c28 Roll Skia from ecd3a2f865ba to 54dbda290908 (12 revisions) (flutter/engine#38668)

* 03609b420 [web] Fix canvas2d leaks in text measurement (flutter/engine#38640)

* remove the unused check in selectable_text (#117716)

* Roll Flutter Engine from 03609b420beb to b5513d7a442a (2 revisions) (#118186)

* fd5a96e10 Limit selection change to focused node on Windows (flutter/engine#38634)

* b5513d7a4 Roll Dart SDK from 0b064bc49557 to cb29cb6d1d0f (12 revisions) (flutter/engine#38688)

* Roll Flutter Engine from b5513d7a442a to 5bdb04f33f99 (2 revisions) (#118187)

* e20809014 Roll Skia from 54dbda290908 to b8c0a78a2378 (43 revisions) (flutter/engine#38690)

* 5bdb04f33 Roll Fuchsia Mac SDK from Bewt-eq7gNu6sU_Ob... to ORxExaprF9fW5d4MP... (flutter/engine#38697)

* 51baed6e0 [fuchsia][scenic] Use infinite hit region (flutter/engine#38647) (#118189)

* Update to Xcode 14.2 (#117507)

* Update to Xcode 14.2

* Only bump for devicelab builders

* Restore presubmit: false

* Allow iOS and macOS plugins to share darwin directory (#115337)

* Roll Flutter Engine from 51baed6e01b8 to 5df0072a0e63 (3 revisions) (#118192)

* 181286315 Roll Dart SDK from cb29cb6d1d0f to 853eff8b0faa (2 revisions) (flutter/engine#38694)

* 642f72f73 Bump actions/upload-artifact from 3.1.0 to 3.1.2 (flutter/engine#38713)

* 5df0072a0 Bump actions/checkout from 3.2.0 to 3.3.0 (flutter/engine#38714)

* Use program during attach if provided (#118130)

* eb5c6f0b4 iOS FlutterTextureRegistry should be a proxy, not the engine itself (flutter/engine#37666) (#118197)

* Update `ListTile` to support Material 3 (#117965)

* Update `ListTile` to support Material 3

* Update `Default ListTile debugFillProperties`

* Add #99933 HTML workaround.

* 3a7d8862f Re-enable UIA text/range provider unit tests (flutter/engine#38718) (#118201)

* Fix path for require.js (#118120)

- Matches new location in the Dart SDK.
   https://dart-review.googlesource.com/c/sdk/+/275482
- Includes fall back logic so the existing and new locations will work
  depending on the file that is available.

* ee0c4d26b Roll flutter/packages to 25454e (flutter/engine#38685) (#118205)

* Roll Flutter Engine from ee0c4d26b0fa to 264aa032cf75 (2 revisions) (#118208)

* 5a39a8846 Add CI builder for windows-arm64. (flutter/engine#38394)

* 264aa032c Revert "Add CI builder for windows-arm64. (#38394)" (flutter/engine#38729)

* 9c0b187a1 Roll Dart SDK from 853eff8b0faa to 418bee5da2e2 (4 revisions) (flutter/engine#38727) (#118210)

* add closed/open focus traversal; use open on web (#115961)

* allow focus to leave FlutterView

* fix tests and docs

* small doc update

* fix analysis lint

* use closed loop for dialogs

* add tests for new API

* address comments

* test FocusScopeNode.traversalEdgeBehavior setter; reverse wrap-around

* rename actionResult to invokeResult

* address comments

* Roll Flutter Engine from 9c0b187a1139 to 716bb9172c0d (3 revisions) (#118220)

* b6720a5b7 Undo axes flip on Mac when shift+scroll-wheel (flutter/engine#38338)

* 4f0cdcd0b Inline usage of SkIsPow2 (flutter/engine#38722)

* 716bb9172 [Impeller Scene] Add DisplayList OP and Dart bindings (flutter/engine#38676)

* Hide InkWell hover highlight when an hovered InkWell is disabled (#118026)

* Allow select cases to be numbers (#116625)

* [Impeller Scene] Add SceneC asset importing (#118157)

* Add a comment about repeat event + fix typos (#118095)

* Add  MaterialStateProperty `overlayColor` & `mouseCursor` and fix hovering on thumbs behavior (#116894)

* Roll Flutter Engine from 716bb9172c0d to 687e3cb0fbe2 (2 revisions) (#118242)

* 24ee5c10f Roll Fuchsia Mac SDK from ORxExaprF9fW5d4MP... to zC90VpkAGMG1jJ-BK... (flutter/engine#38734)

* 687e3cb0f Roll Dart SDK from 418bee5da2e2 to 8d7a6aabd3a3 (2 revisions) (flutter/engine#38738)

* Roll Plugins from 0a0e3d205ca3 to 9fdc899b72ca (8 revisions) (#118253)

* d03de2fce [tool] Don't add Guava in the all-packages app (flutter/plugins#6747)

* d485c7e83 [local_auth]: Bump espresso-core (flutter/plugins#6925)

* a47e71988 [webview_flutter_platform_interface] Improves error message when `WebViewPlatform.instance` is null (flutter/plugins#6938)

* 7132dac0e [google_maps]: Bump espresso-core from 3.4.0 to 3.5.1 in /packages/google_maps_flutter/google_maps_flutter_android/android (flutter/plugins#6937)

* dc3287ccf [espresso]: Bump truth from 1.4.0 to 1.5.0 in /packages/espresso/android (flutter/plugins#6707)

* 1de6477bd [camera]: Bump camerax_version from 1.3.0-alpha01 to 1.3.0-alpha02 in /packages/camera/camera_android_camerax/android (flutter/plugins#6828)

* fb405819e [shared_preferences] Merge iOS and macOS implementations (flutter/plugins#6920)

* 9fdc899b7 [various] Enable `avoid_dynamic_calls` (flutter/plugins#6834)

* Manually mark Windows run_debug_test_windows as unflaky (#118112)

* Marks Mac_arm64_android run_debug_test_android to be unflaky (#117469)

* Marks Mac_arm64_ios run_debug_test_macos to be unflaky (#117990)

* remove unsound mode web test (#118256)

* Update `CupertinoPicker` example (#118248)

* Update `CupertinoPicker` example

* format lines

* Revert making variable public

* revert variable change

* roll packages (#118117)

* Add option for opting out of enter route snapshotting. (#118086)

* Add option for opting out of enter route snapshotting.

* Fix typo.

* Merge find layers logic.

* Add justification comment on why web is skipped in test.

* Update documentation as suggested.

* Update documentation as suggested.

* roll packages (#118272)

* Roll Flutter Engine from 687e3cb0fbe2 to c1d61cf11da8 (6 revisions) (#118274)

* ad9052a38 Roll Dart SDK from 8d7a6aabd3a3 to b90a008ddb29 (1 revision) (flutter/engine#38740)

* c4c97023f Mark nodes as `kIsLineBreakingObject` by default, TODO further distinctions (flutter/engine#38721)

* f40af3eb4 Roll Dart SDK from b90a008ddb29 to 5e344de60564 (1 revision) (flutter/engine#38744)

* 41cfbdd7e Roll Fuchsia Mac SDK from zC90VpkAGMG1jJ-BK... to 6xysoRPCXJ3cJX12x... (flutter/engine#38746)

* 95c7b1f8a Make operator == parameter non-nullable (flutter/engine#38663)

* c1d61cf11 Move canvaskit artifacts to expected location in Web SDK Archive (flutter/engine#38168)

* Align `flutter pub get/upgrade/add/remove/downgrade` (#117896)

* Align `flutter pub get/upgrade/add/remove/downgrade`

* Add final . to command description

* Remove trailing whitespace

* Don't print message that command is being run

* Update expectations

* Use relative path

* Remove duplicated line

* Improve function dartdoc

* ae9e181e3 Roll Dart SDK from 5e344de60564 to 7b4d49402252 (1 revision) (flutter/engine#38756) (#118287)

* Fix Finnish TimeOfDate format (#118204)

* init

* add test

* Roll Flutter Engine from ae9e181e30c2 to 53bd4bbf9646 (3 revisions) (#118289)

* b9a723482 [web] retain GL/Gr context on window resize (flutter/engine#38576)

* fd4360671 Add SpringAnimation.js from React Native (flutter/engine#38750)

* 53bd4bbf9 Roll Skia from b8c0a78a2378 to e1f3980272f3 (24 revisions) (flutter/engine#38758)

* 9ade91c8b removed forbidden skia include (flutter/engine#38761) (#118296)

* 8d7beac82 Roll Dart SDK from 7b4d49402252 to 23cbd61a1327 (1 revision) (flutter/engine#38764) (#118297)

* 6256f05db Roll Fuchsia Mac SDK from 6xysoRPCXJ3cJX12x... to a9NpYJbjhDRX9P9u4... (flutter/engine#38767) (#118300)

* FIX: UnderlineInputBorder hashCode and equality by including borderRadius (#118284)

* Bump actions/upload-artifact from 3.1.1 to 3.1.2 (#118116)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/83fd05a356d7e2593de66fc9913b3002723633cb...0b7f8abb1508181956e8e162db84b466c27e18ce)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/checkout from 3.1.0 to 3.3.0 (#118052)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3.1.0 to 3.3.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8...ac593985615ec2ede58e132d2e21d2b1cbd6127c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump github/codeql-action from 2.1.35 to 2.1.37 (#117104)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.35 to 2.1.37.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b2a92eb56d8cb930006a1c6ed86b0782dd8a4297...959cbb7472c4d4ad70cdfe6f4976053fe48ab394)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* 6048f9110 Roll Dart SDK from 23cbd61a1327 to 22fa50e09ee8 (3 revisions) (flutter/engine#38776) (#118320)

* Roll Plugins from 9fdc899b72ca to 620a059d62b2 (4 revisions) (#118317)

* 6a24f2d7b == override parameters are non-nullable (flutter/plugins#6900)

* b9206bcfe [espresso]: Bump espresso-accessibility and espresso-idling-resource from 3.1.0 to 3.5.1 in /packages/espresso/android (flutter/plugins#6933)

* b1797c2bb [file_selector] Switch to Pigeon for macOS (flutter/plugins#6902)

* 620a059d6 [google_sign_in] Renames generated folder to js_interop. (flutter/plugins#6915)

* ee76ab71e Cleanup Skia includes in image_generator/descriptor (flutter/engine#38775) (#118335)

* Roll Flutter Engine from ee76ab71e0a6 to cccaae2f3d8b (3 revisions) (#118349)

* 5ec03d7d1 Roll Fuchsia Mac SDK from a9NpYJbjhDRX9P9u4... to ao8fSjW8HrZSsu3yq... (flutter/engine#38782)

* 87ead948e delete include of private GrMtlTypes header (flutter/engine#38783)

* cccaae2f3 [fuchsia] Replace deprecated AddLocalChild (flutter/engine#38788)

* 764a9e012 Roll Skia from e1f3980272f3 to dfb838747295 (48 revisions) (flutter/engine#38790) (#118355)

* Roll Flutter Engine from 764a9e01204d to 4a8d6866a1c0 (2 revisions) (#118357)

* 7abc5f13a [web] Update felt to use generated JS runtime for Dart2Wasm. (flutter/engine#38786)

* 4a8d6866a Add CI builder for windows-arm64. (#38394) (flutter/engine#38739)

* Marks Mac_ios complex_layout_scroll_perf_bad_ios__timeline_summary to be unflaky (#111570)

* Marks Mac channels_integration_test to be unflaky (#111571)

* Marks Mac_ios platform_views_scroll_perf_non_intersecting_impeller_ios__timeline_summary to be unflaky (#116668)

* Fix `SliverAppBar.large` and `SliverAppBar.medium` do not use `foregroundColor` (#118322)

* docs: update docs about color property in material card (#117263)

* update docs

* *

* typo

* Revert "typo"

This reverts commit 3e25d4be337b1a41d24b1a86136606d6551b30cf.

* Update card.dart

* Update card.dart

* Update card.dart

* Fix M3 `Drawer` default shape in RTL (#118185)

* [M3] Add error state support for side property of CheckBox (#118386)

* Add error state support for side property

* lint fixes

* lint fixes

* Roll Plugins from 620a059d62b2 to 39197f17ca59 (6 revisions) (#118391)

* 8c461cfde [gh_actions]: Bump ossf/scorecard-action from 2.0.6 to 2.1.2 (flutter/plugins#6882)

* a119afd47 [in_app_pur]: Bump espresso-core from 3.4.0 to 3.5.1 in /packages/in_app_purchase/in_app_purchase_android/android (flutter/plugins#6924)

* 12266846e Roll Flutter from 507062032fa4 to 7ddf42eae5ee (5 revisions) (flutter/plugins#6923)

* 44098fe34 [shared_preferences] Switch to `shared_preferences_foundation` (flutter/plugins#6940)

* 0dd166959 [tool] Replace `flutter format` (flutter/plugins#6946)

* 39197f17c [gh_actions]: Bump actions/checkout from 3.1.0 to 3.3.0 (flutter/plugins#6935)

* Move debug error message from failed pub to logger.printTrace (#118379)

* Move debug error message from failed pub to logger.printTrace

* Update test

* [tool] Generate a binary version of the asset manifest (#117233)

* initial

* update asset_bundle_package_test

* Update asset_bundle_test.dart

* Update asset_bundle_package_fonts_test.dart

* update pubspec checksum for smc dependency

* flutter update-packages --force-upgrade

* prefer += 1 over ++

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* add regexp comment

* rescope int list comparison function

* update packages

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* IconButtonTheme should be overridden by the AppBar/AppBarTheme's iconTheme and actionsIconTheme (#118216)

* reduce pub output from flutter create (#118285)

* reduce pub output from flutter create

* fix fake Pub implementations

* fix tests

* Update pub.dart

* replace enum with simpler boolean

* fix tests

* Revert "fix tests"

This reverts commit 8a3182d3b95d4f2bf337343cdb76e88c2f428ca8.

* Revert "replace enum with simpler boolean"

This reverts commit 445dbc443db4eb5ce284f76749f60e81208b8783.

* go back to using an enum

* roll packages (#118277)

* [web] Update build to use generated JS runtime for Dart2Wasm. (#118359)

* Roll Flutter Engine from 4a8d6866a1c0 to c01465a18f31 (9 revisions) (#118409)

* 2d2c5e7eb Roll Dart SDK from 22fa50e09ee8 to 21f5de0ad596 (2 revisions) (flutter/engine#38796)

* 24eb954da fix canvas drawLine bugs (flutter/engine#38753)

* 2b024cbb6 [Impeller Scene] Change how property resolution works to fix Animation blending; add mutation log to nodes; enable backface culling; add vertex color contribution back to meshes (flutter/engine#38766)

* 0192ea15e Roll Dart SDK from 21f5de0ad596 to 7879aa93da71 (1 revision) (flutter/engine#38804)

* 5cd50f568 Roll Fuchsia Mac SDK from ao8fSjW8HrZSsu3yq... to gZ6xbsp2MRsoXfKgY... (flutter/engine#38806)

* 4bf70c011 Roll Dart SDK from 7879aa93da71 to d7235947ff9b (1 revision) (flutter/engine#38808)

* bb2d5e93a Roll Dart SDK from d7235947ff9b to edd406c07399 (2 revisions) (flutter/engine#38814)

* 2a9fa7975 Revert "fix canvas drawLine bugs (#38753)" (flutter/engine#38815)

* c01465a18 Add wasm_release build to linux_host_engine.json (flutter/engine#38755)

* Add MSYS2 detection on Windows Terminal (#117612)

As the results of "uname -s" command is like the below on MSYS2 on
Windows Terminal,

MSYS_NT-10.0-22621

This patch fixes the Flutter command working on this kind of systems.

Signed-off-by: Deokgyu Yang <secugyu@gmail.com>

Signed-off-by: Deokgyu Yang <secugyu@gmail.com>

* Add documentation for drag/fling offset in WidgetController. (#118288)

* Documentation for drag/fling offset

* Fix typo

* Fix typo 2

* Fix the docs_test

* Fix the grammar

* 688015782 fixed glfw example for arm64 (flutter/engine#38426) (#118413)

* Use correct API docs link in create --sample help message (#118371)

* Use correct API doc link in create --sample help message

* Verify Flutter and Dart website links in tool help messages use https

* Adjust test failure reasoning message

* Roll Flutter Engine from 688015782762 to 35cfe9158648 (2 revisions) (#118415)

* e9b7a2d38 [macOS] Do not block raster thread when shutting down (flutter/engine#38777)

* 35cfe9158 Roll Fuchsia Mac SDK from gZ6xbsp2MRsoXfKgY... to nIPtQ59jG1pxyatOq... (flutter/engine#38819)

* Fix tap/drag callbacks firing when TapAndDragGestureRecognizer has not won the arena (#118342)

* Prevent drag and tap from accepting when a tap down exceeds the recognizers deadline but the recognizer has not won the arena

* Add test

* make analyzer happy

Co-authored-by: Renzo Olivares <roliv@google.com>

* 8aa26baa9 Roll Dart SDK from edd406c07399 to 20cca507d98b (1 revision) (flutter/engine#38823) (#118420)

* add generated_plugins.cmake (#116581)

Added files to the .gitignore that are generated on each "flutter pub get", so it's useless to ever commit these to a git repository.

* Enable xcode cache cleanup for a few days. (#118419)

This is to ensure the xcode caches get back to a normal state as they
seem to have gotten into a bad state after updating the xcode version.

Bug: https://github.com/flutter/flutter/issues/118324
Bug: https://github.com/flutter/flutter/issues/118327
Bug: https://github.com/flutter/flutter/issues/118328

* 99509a7e4 Correct FrameTimingRecorder's raster start time. (flutter/engine#38674) (#118425)

* Roll Flutter Engine from 99509a7e4275 to f3f05368033b (2 revisions) (#118429)

* 091c785a4 [windows] Use FML_DCHECK in place of C assert (flutter/engine#38826)

* f3f053680 [windows] Eliminate unnecessary iostream imports (flutter/engine#38824)

* Add `allowedButtonsFilter` to prevent Draggable from appearing with secondary click. (#111852)

* DragTarget part 1.

[WIP] Change GestureRecognizer. Sorry.

[WIP] Move from GestureRecognizer to MultiDragGestureRecognizer.

Make it a `Set<int>?`

Get bitwise operations working.

Fix test. Rename to allowedInputPointers.

Convert into a builder.

Improve code with default funciton.

Refactor everything again.

Rename to buttonEventFilter.

Use static function.

Fix analyzer.

Fix private reference.

Use // in private method.

* Fix Renzo request.

* Add `allowedButtonsFilter` everywhere.

* Refactor monoDrag for multi pointer support.

* Fix tests?

* Change default to always true.

* Fix PR comments.

* Completely refactor long press.

* Add forgotten class.

* Revert "Completely refactor long press."

This reverts commit 5038e8603e250e8c928b0f1754fb794b7b75738b.

* Add default value to LongPress

* Refactor doubleTap.

* Relax double tap.

* Write comment in LongPress.

* Use template.

* 15d59792e Roll Skia from dfb838747295 to 9e51c2c9e231 (26 revisions) (flutter/engine#38827) (#118432)

* a62d25326 Roll Skia from dfb838747295 to cc983d28f3bf (27 revisions) (flutter/engine#38830) (#118435)

* dfa0327f8 Roll Skia from cc983d28f3bf to fd54be29a3cc (3 revisions) (flutter/engine#38833) (#118436)

* 07603c6d4 Roll Dart SDK from 20cca507d98b to 3d629d00a8d7 (2 revisions) (flutter/engine#38834) (#118439)

* Fix copying/applying font fallback with package (#118393)

* Add test to check that package prefix of font fallback is not duplicated

* Fix duplicate package prefix of font family fallback

* Add test to check that package prefix of font fallback is not duplicated

* Fix duplicate package prefix of font family fallback

* dec608917 Roll Fuchsia Mac SDK from nIPtQ59jG1pxyatOq... to 21nYb648VWbpxc36t... (flutter/engine#38839) (#118445)

* 970889b87 Roll Skia from fd54be29a3cc to c72c7bf7e45b (3 revisions) (flutter/engine#38840) (#118448)

* a512cebdc Roll Dart SDK from 3d629d00a8d7 to 645fd748e79e (1 revision) (flutter/engine#38841) (#118454)

* Roll Plugins from 39197f17ca59 to 92a5367d58df (4 revisions) (#118457)

* b89e4fc2d Roll Flutter from 7ddf42eae5ee to 0d91c0343bdc (58 revisions) (flutter/plugins#6948)

* 86eda6992 [path_provider] Switch to Pigeon for macOS (flutter/plugins#6635)

* be2e3de7a [shared_preferences_foundation] Add Swift runtime search paths for Objective-C apps (flutter/plugins#6952)

* 92a5367d5 [tool] Fix false positives in update-exceprts (flutter/plugins#6950)

* Added LinearBorder, an OutlinedBorder like BoxBorder (#116940)

* Marks Mac_ios spell_check_test to be unflaky (#117743)

* [Linux] Add a 'flutter run' console output test (#118279)

* Add Linux support for the UI integration test project

* Add Linux run console test

* Add Info.plist from build directory as input path to Thin Binary build phase (#118209)

* Add Info.plist from build directory as input path to Thin Binary build phase

* fix directive ordering

* migrate benchmark, integration, and example tests

* [flutter_tools] re-enable web shader compilation (#118461)

* [flutter_tools] re-enable web shader compilation

* update test cases

* Bump github/codeql-action from 2.1.37 to 2.1.38 (#118482)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.37 to 2.1.38.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/959cbb7472c4d4ad70cdfe6f4976053fe48ab394...515828d97454b8354517688ddc5b48402b723750)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* remove whitespace

* add newline

* newline fixes

* newline fix

* test fix

* Update documentation about accent color (#116778)

* e44a0de4c Roll Fuchsia Mac SDK from JLTTlcNPJeScjSO2B... to FeFYsNPy64-PEXPer... (flutter/engine#38558) (#117779)

* Roll Plugins from e11cb245bb8e to 2d66f30e5825 (2 revisions) (#117781)

* 417b37009 Roll Flutter from ae292cc4e5e4 to 17482fd425ee (28 revisions) (flutter/plugins#6889)

* 2d66f30e5 [webview_flutter_web] Adds auto registration of the `WebViewPlatform` implementation (flutter/plugins#6886)

* Roll Flutter Engine from 5713a216076f to 780082203ea9 (2 revisions) (#117797)

* fd94b04b1 [Impeller Scene] Import skinned mesh vertex data (flutter/engine#38554)

* 780082203 Roll Fuchsia Linux SDK from gnyHyot4AZp7HZgUI... to KCm_e3N4gosNuY4IW... (flutter/engine#38568)

* Reland "Add support for double tap and drag for text selection #109573" (#117502)

* Revert "Revert "Add support for double tap and drag for text selection (#109573)" (#117497)"

This reverts commit 39fa0117a919bd401c4c8734c97ddb46fbc45cb7.

* Allow TapAndDragGestureRecognizer to accept pointer events from any devices -- the TapGestureRecognizer it replaces was previously doing this

Co-authored-by: Renzo Olivares <roliv@google.com>

* roll packages (#117940)

* roll packages (#118001)

* [EMPTY] Commit to refresh the tree that is currently red (#118062)

* Remove doc reference to the deprecated ui.FlutterWindow API (#118064)

* Fix `flutter update-packages` regression by fixing parameters in "pub get" runner (#116687)

* Make pub get runner respect printProgress and retry parameters

* Fix typo

* Add regression test

* Improve test

* Fix implementation and test

* Test to fix flutter_drone tests

* Revert test

* Attempt #2 to fix flutter_drone tests

* Revert attempt

* Hack: Force printProgress to debug Windows tests

* Use ProcessUtils.run to avoid dangling stdout and stderr

* Update documentation

* Clean up retry argument

* [Impeller Scene] Add SceneC asset importing (#118157)

* roll packages (#118117)

* roll packages (#118272)

* Align `flutter pub get/upgrade/add/remove/downgrade` (#117896)

* Align `flutter pub get/upgrade/add/remove/downgrade`

* Add final . to command description

* Remove trailing whitespace

* Don't print message that command is being run

* Update expectations

* Use relative path

* Remove duplicated line

* Improve function dartdoc

* Bump github/codeql-action from 2.1.35 to 2.1.37 (#117104)

Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.1.35 to 2.1.37.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b2a92eb56d8cb930006a1c6ed86b0782dd8a4297...959cbb7472c4d4ad70cdfe6f4976053fe48ab394)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Move debug error message from failed pub to logger.printTrace (#118379)

* Move debug error message from failed pub to logger.printTrace

* Update test

* [tool] Generate a binary version of the asset manifest (#117233)

* initial

* update asset_bundle_package_test

* Update asset_bundle_test.dart

* Update asset_bundle_package_fonts_test.dart

* update pubspec checksum for smc dependency

* flutter update-packages --force-upgrade

* prefer += 1 over ++

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* add regexp comment

* rescope int list comparison function

* update packages

Co-authored-by: Jonah Williams <jonahwilliams@google.com>

* reduce pub output from flutter create (#118285)

* reduce pub output from flutter create

* fix fake Pub implementations

* fix tests

* Update pub.dart

* replace enum with simpler boolean

* fix tests

* Revert "fix tests"

This reverts commit 8a3182d3b95d4f2bf337343cdb76e88c2f428ca8.

* Revert "replace enum with simpler boolean"

This reverts commit 445dbc443db4eb5ce284f76749f60e81208b8783.

* go back to using an enum

* roll packages (#118277)

* Fix tap/drag callbacks firing when TapAndDragGestureRecognizer has not won the arena (#118342)

* Prevent drag and tap from accepting when a tap down exceeds the recognizers deadline but the recognizer has not won the arena

* Add test

* make analyzer happy

Co-authored-by: Renzo Olivares <roliv@google.com>

* Add `allowedButtonsFilter` to prevent Draggable from appearing with secondary click. (#111852)

* DragTarget part 1.

[WIP] Change GestureRecognizer. Sorry.

[WIP] Move from GestureRecognizer to MultiDragGestureRecognizer.

Make it a `Set<int>?`

Get bitwise operations working.

Fix test. Rename to allowedInputPointers.

Convert into a builder.

Improve code with default funciton.

Refactor everything again.

Rename to buttonEventFilter.

Use static function.

Fix analyzer.

Fix private reference.

Use // in private method.

* Fix Renzo request.

* Add `allowedButtonsFilter` everywhere.

* Refactor monoDrag for multi pointer support.

* Fix tests?

* Change default to always true.

* Fix PR comments.

* Completely refactor long press.

* Add forgotten class.

* Revert "Completely refactor long press."

This reverts commit 5038e8603e250e8c928b0f1754fb794b7b75738b.

* Add default value to LongPress

* Refactor doubleTap.

* Relax double tap.

* Write comment in LongPress.

* Use template.

* 15d59792e Roll Skia from dfb838747295 to 9e51c2c9e231 (26 revisions) (flutter/engine#38827) (#118432)

* [flutter_tools] re-enable web shader compilation (#118461)

* [flutter_tools] re-enable web shader compilation

* update test cases

* remove whitespace

* fix rebase mess

Signed-off-by: Morris Kurz <morriskurz@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Deokgyu Yang <secugyu@gmail.com>
Co-authored-by: Pierre-Louis <6655696+guidezpl@users.noreply.github.com>
Co-authored-by: engine-flutter-autoroll <engine-flutter-autoroll@skia.org>
Co-authored-by: Jesús S Guerrero <jesus_sguerrero@hotmail.com>
Co-authored-by: Darren Austin <darrenaustin@google.com>
Co-authored-by: Ahmed Ashour <asashour@yahoo.com>
Co-authored-by: Michael Goderbauer <goderbauer@google.com>
Co-authored-by: Greg Price <gnprice@gmail.com>
Co-authored-by: CicadaCinema <52425971+CicadaCinema@users.noreply.github.com>
Co-authored-by: Tae Hyung Kim <thkim1011@users.noreply.github.com>
Co-authored-by: Renzo Olivares <rmolivares@renzo-olivares.dev>
Co-authored-by: Renzo Olivares <roliv@google.com>
Co-authored-by: Sam Rawlins <srawlins@google.com>
Co-authored-by: Peixin Li <pageli328@gmail.com>
Co-authored-by: Callum Moffat <smartercallum@gmail.com>
Co-authored-by: Vyacheslav Egorov <vegorov@google.com>
Co-authored-by: Christopher Fujino <christopherfujino@gmail.com>
Co-authored-by: Flutter GitHub Bot <fluttergithubbot@gmail.com>
Co-authored-by: Camille Simon <43054281+camsim99@users.noreply.github.com>
Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
Co-authored-by: Drew Roen <102626803+drewroengoogle@users.noreply.github.com>
Co-authored-by: Jason Simmons <jason-simmons@users.noreply.github.com>
Co-authored-by: Nehal Patel <nehalvpatel@users.noreply.github.com>
Co-authored-by: gmackall <34871572+gmackall@users.noreply.github.com>
Co-authored-by: Gray Mackall <mackall@google.com>
Co-authored-by: Mohammed  CHAHBOUN <69054810+M97Chahboun@users.noreply.github.com>
Co-authored-by: Alex Wallen <wallenstephen@outlook.com>
Co-authored-by: a-wallen <stephenwallen@google.com>
Co-authored-by: Morris Kurz <morriskurz@gmail.com>
Co-authored-by: Lucas.Xu <tsuiyuenhong@gmail.com>
Co-authored-by: Jenn Magder <magder@google.com>
Co-authored-by: Helin Shiah <helinx@google.com>
Co-authored-by: Taha Tesser <tessertaha@gmail.com>
Co-authored-by: Nicholas Shahan <nshahan@google.com>
Co-authored-by: Yegor <yjbanov@google.com>
Co-authored-by: Bruno Leroux <leroux_bruno@yahoo.fr>
Co-authored-by: Brandon DeRosier <bdero@google.com>
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
Co-authored-by: Jonah Williams <jonahwilliams@google.com>
Co-authored-by: Youchen Du <youchen.du@gmail.com>
Co-authored-by: Sigurd Meldgaard <sigurdm@google.com>
Co-authored-by: Rydmike <m.rydstrom@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Suhwan Cha <suhw4n@gmail.com>
Co-authored-by: Andrew Kolos <andrewrkolos@gmail.com>
Co-authored-by: Qun Cheng <36861262+QuncCccccc@users.noreply.github.com>
Co-authored-by: joshualitt <joshualitt@google.com>
Co-authored-by: Deokgyu Yang <secugyu@gmail.com>
Co-authored-by: Peixin Li <peixinli@google.com>
Co-authored-by: Parker Lougheed <parlough@gmail.com>
Co-authored-by: Ivo Beckers <35917382+IvoB1987@users.noreply.github.com>
Co-authored-by: godofredoc <godofredoc@google.com>
Co-authored-by: Bernardo Ferrari <bernaferrari2@gmail.com>
Co-authored-by: Dennis Kugelmann <kugelmann.dennis@gmail.com>
Co-authored-by: Hans Muller <hans.muller@gmail.com>
Co-authored-by: Victoria Ashworth <vashworth@google.com>