diff --git a/flake.lock b/flake.lock index a68bc6b5cd..c86add80d2 100644 --- a/flake.lock +++ b/flake.lock @@ -1,100 +1,58 @@ { "nodes": { - "android-nixpkgs": { + "flake-parts": { "inputs": { - "devshell": "devshell", - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1764707061, - "narHash": "sha256-vEQ7RjOzwirVBy88g91bwXUc5QmDurBg3Ex8fs2E7ns=", - "owner": "tadfisher", - "repo": "android-nixpkgs", - "rev": "111c7a7023396153a4010fd124f6a9fee9c13be9", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { - "owner": "tadfisher", - "repo": "android-nixpkgs", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell": { - "inputs": { - "nixpkgs": [ - "android-nixpkgs", - "nixpkgs" - ] - }, + "nixpkgs": { "locked": { - "lastModified": 1764011051, - "narHash": "sha256-M7SZyPZiqZUR/EiiBJnmyUbOi5oE/03tCeFrTiUZchI=", - "owner": "numtide", - "repo": "devshell", - "rev": "17ed8d9744ebe70424659b0ef74ad6d41fc87071", + "lastModified": 1771951090, + "narHash": "sha256-ag8IQ+xhseLC4rkgg7F0G2sdh4wVW7IbPZqWNBABLHU=", + "owner": "xinux-org", + "repo": "upstream", + "rev": "b01c810cce1e087e3be827459821263edd896a36", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "xinux-org", + "repo": "upstream", "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, + "nixpkgs-lib": { "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "72716169fe93074c333e8d0173151350670b824c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs": { - "locked": { - "lastModified": 1764517877, - "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", - "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", - "revCount": 904649, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.904649%2Brev-2d293cbfa5a793b4c50d17c05ef9e385b90edf6c/019ad7f2-e8f3-79e9-ad92-dd7a45c069d3/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1" - } - }, "root": { "inputs": { - "android-nixpkgs": "android-nixpkgs", + "flake-parts": "flake-parts", "nixpkgs": "nixpkgs" } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 98d861d0cb..e27fc3c034 100644 --- a/flake.nix +++ b/flake.nix @@ -1,52 +1,41 @@ { - description = "fluffychat nix"; + description = "A beginning of an awesome project bootstrapped with github:bleur-org/templates"; - # Flake inputs - inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; # 0 Stable Nixpkgs (use 0.1 for unstable) - inputs.android-nixpkgs = { - url = "github:tadfisher/android-nixpkgs"; - inputs = { - nixpkgs.follows = "nixpkgs"; - }; - }; + inputs = { + # Stable for keeping thins clean + # nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; - # Flake outputs - outputs = inputs: let - linuxSystems = [ - "x86_64-linux" - "aarch64-linux" - ]; + # Fresh and new for testing + nixpkgs.url = "github:xinux-org/upstream"; - darwinSystems = [ - "x86_64-darwin" - "aarch64-darwin" - ]; + # The flake-parts library + flake-parts.url = "github:hercules-ci/flake-parts"; + }; - supportedSystems = linuxSystems ++ darwinSystems; + outputs = { + self, + flake-parts, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} ({...}: { + systems = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + perSystem = {pkgs, ...}: { + # Nix script formatter + formatter = pkgs.alejandra; - eachSystems = systems: f: - inputs.nixpkgs.lib.genAttrs systems ( - system: - f { - inherit system; - attrs = import ./nix/attrs.nix {inherit system inputs;}; - } - ); + # Development environment + devShells.default = import ./nix/shell.nix self {inherit pkgs;}; - package = args: target: import ./nix/package.nix args.attrs target; - in { - packages = eachSystems supportedSystems (args: { - linux = package args "linux"; - web = package args "web"; + # Output package + packages = { + default = pkgs.callPackage ./nix { }; + web = pkgs.callPackage ./nix {targetFlutterPlatform = "web"; }; + }; + }; }); - devShells = - eachSystems linuxSystems (args: { - default = import ./nix/shell_linux.nix args.attrs; - }) - // ( - eachSystems darwinSystems (args: { - default = import ./nix/shell_darwin.nix args.attrs; - }) - ); - }; } diff --git a/flake.nix.bak b/flake.nix.bak new file mode 100644 index 0000000000..8627693395 --- /dev/null +++ b/flake.nix.bak @@ -0,0 +1,52 @@ +{ + description = "fluffychat nix"; + + # Flake inputs + inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1"; # 0 Stable Nixpkgs (use 0.1 for unstable) + inputs.android-nixpkgs = { + url = "github:tadfisher/android-nixpkgs"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + + # Flake outputs + outputs = inputs: let + linuxSystems = [ + "x86_64-linux" + "aarch64-linux" + ]; + + darwinSystems = [ + "x86_64-darwin" + "aarch64-darwin" + ]; + + supportedSystems = linuxSystems ++ darwinSystems; + + eachSystems = systems: f: + inputs.nixpkgs.lib.genAttrs systems ( + system: + f { + inherit system; + attrs = import ./nix/attrs.nix {inherit system inputs;}; + } + ); + + package = args: target: import ./nix/package.nix args.attrs target; + in { + packages = eachSystems supportedSystems (args: { + linux = package args "linux"; + web = inputs.nixpkgs.callPackage ./nix/package.nix {inherit inputs.nixpkgs;} "web"; + }); + devShells = + eachSystems linuxSystems (args: { + default = import ./nix/shell_linux.nix args.attrs; + }) + // ( + eachSystems darwinSystems (args: { + default = import ./nix/shell_darwin.nix args.attrs; + }) + ); + }; +} diff --git a/nix/attrs.nix b/nix.bak/attrs.nix similarity index 100% rename from nix/attrs.nix rename to nix.bak/attrs.nix diff --git a/nix/flutter_vodozemac.nix b/nix.bak/flutter_vodozemac.nix similarity index 100% rename from nix/flutter_vodozemac.nix rename to nix.bak/flutter_vodozemac.nix diff --git a/nix/package.nix b/nix.bak/package.bak.nix similarity index 100% rename from nix/package.nix rename to nix.bak/package.bak.nix diff --git a/nix.bak/package.nix b/nix.bak/package.nix new file mode 100644 index 0000000000..194c493f25 --- /dev/null +++ b/nix.bak/package.nix @@ -0,0 +1,154 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchzip, + imagemagick, + libgbm, + libdrm, + flutter338, + pulseaudio, + webkitgtk_4_1, + copyDesktopItems, + makeDesktopItem, + + callPackage, + vodozemac-wasm ? callPackage ./vodozemac-wasm.nix { flutter = flutter338; }, + + targetFlutterPlatform ? "linux", +}: + +let + libwebrtcRpath = lib.makeLibraryPath [ + libgbm + libdrm + ]; + pubspecLock = lib.importJSON ./pubspec.lock.json; + libwebrtc = fetchzip { + url = "https://github.com/flutter-webrtc/flutter-webrtc/releases/download/v1.1.0/libwebrtc.zip"; + sha256 = "sha256-lRfymTSfoNUtR5tSUiAptAvrrTwbB8p+SaYQeOevMzA="; + }; +in +flutter338.buildFlutterApplication ( + rec { + pname = "uchar-${targetFlutterPlatform}"; + # version = "2.4.1"; + + # src = fetchFromGitHub { + # owner = "krille-chan"; + # repo = "fluffychat"; + # tag = "v${version}"; + # hash = "sha256-8Q+A5IZW6RjmnE+ovI7HYPZCi0oOoj9SU7o0VUPXxsM="; + # }; + + src = ../.; + + inherit pubspecLock; + + gitHashes = { + flutter_web_auth_2 = "sha256-3aci73SP8eXg6++IQTQoyS+erUUuSiuXymvR32sxHFw="; + flutter_secure_storage_linux = "sha256-cFNHW7dAaX8BV7arwbn68GgkkBeiAgPfhMOAFSJWlyY="; + }; + + inherit targetFlutterPlatform; + + flutterBuildFlags = [ + # Required since v2.4.0 + "--enable-experiment=dot-shorthands" + ]; + + meta = + { + description = "Chat with your friends (matrix client)"; + homepage = "https://uchar.uz/"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ + mkg20001 + tebriel + aleksana + ]; + badPlatforms = lib.platforms.darwin; + } + // lib.optionalAttrs (targetFlutterPlatform == "linux") { + mainProgram = "fluffychat"; + }; + } + // lib.optionalAttrs (targetFlutterPlatform == "linux") { + nativeBuildInputs = [ + imagemagick + copyDesktopItems + webkitgtk_4_1 + ]; + + runtimeDependencies = [ pulseaudio ]; + + env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}"; + + desktopItems = [ + (makeDesktopItem { + name = "Fluffychat"; + exec = "fluffychat"; + icon = "fluffychat"; + desktopName = "Fluffychat"; + genericName = "Chat with your friends (matrix client)"; + categories = [ + "Chat" + "Network" + "InstantMessaging" + ]; + }) + ]; + + customSourceBuilders = { + flutter_webrtc = + { version, src, ... }: + stdenv.mkDerivation { + pname = "flutter_webrtc"; + inherit version src; + inherit (src) passthru; + + postPatch = '' + substituteInPlace third_party/CMakeLists.txt \ + --replace-fail "\''${CMAKE_CURRENT_LIST_DIR}/downloads/libwebrtc.zip" ${libwebrtc} + ln -s ${libwebrtc} third_party/libwebrtc + ''; + + installPhase = '' + runHook preInstall + + mkdir $out + cp -r ./* $out/ + + runHook postInstall + ''; + }; + }; + + # Temporary fix for json deprecation error + # https://github.com/juliansteenbakker/flutter_secure_storage/issues/965 + postPatch = '' + substituteInPlace linux/CMakeLists.txt \ + --replace-fail \ + "PRIVATE -Wall -Werror" \ + "PRIVATE -Wall -Werror -Wno-deprecated" + ''; + + postInstall = '' + FAV=$out/app/fluffychat-linux/data/flutter_assets/assets/favicon.png + ICO=$out/share/icons + + for size in 24 32 42 64 128 256 512; do + D=$ICO/hicolor/''${size}x''${size}/apps + mkdir -p $D + magick $FAV -resize ''${size}x''${size} $D/fluffychat.png + done + + patchelf --add-rpath ${libwebrtcRpath} $out/app/fluffychat-linux/lib/libwebrtc.so + ''; + } + // lib.optionalAttrs (targetFlutterPlatform == "web") { + preBuild = '' + cp -r ${vodozemac-wasm}/* ./assets/vodozemac/ + ''; + } +) diff --git a/nix/shell_darwin.nix b/nix.bak/shell_darwin.nix similarity index 100% rename from nix/shell_darwin.nix rename to nix.bak/shell_darwin.nix diff --git a/nix/shell_linux.nix b/nix.bak/shell_linux.nix similarity index 100% rename from nix/shell_linux.nix rename to nix.bak/shell_linux.nix diff --git a/nix/shell_vodozemac.nix b/nix.bak/shell_vodozemac.nix similarity index 100% rename from nix/shell_vodozemac.nix rename to nix.bak/shell_vodozemac.nix diff --git a/nix/vodozemac.nix b/nix.bak/vodozemac.nix similarity index 100% rename from nix/vodozemac.nix rename to nix.bak/vodozemac.nix diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 0000000000..dca1913803 --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,146 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchzip, + imagemagick, + libgbm, + libdrm, + flutter338, + pulseaudio, + webkitgtk_4_1, + copyDesktopItems, + makeDesktopItem, + + callPackage, + vodozemac-wasm ? callPackage ./vodozemac-wasm.nix { flutter = flutter338; }, + + targetFlutterPlatform ? "linux", +}: + +let + libwebrtcRpath = lib.makeLibraryPath [ + libgbm + libdrm + ]; + pubspecLock = lib.importJSON ./pubspec.lock.json; + libwebrtc = fetchzip { + url = "https://github.com/flutter-webrtc/flutter-webrtc/releases/download/v1.1.0/libwebrtc.zip"; + sha256 = "sha256-lRfymTSfoNUtR5tSUiAptAvrrTwbB8p+SaYQeOevMzA="; + }; +in +flutter338.buildFlutterApplication ( + rec { + pname = "uchar-${targetFlutterPlatform}"; + version = "2.4.1"; + + src = lib.cleanSource ./..; + + inherit pubspecLock; + + gitHashes = { + flutter_web_auth_2 = "sha256-3aci73SP8eXg6++IQTQoyS+erUUuSiuXymvR32sxHFw="; + flutter_secure_storage_linux = "sha256-cFNHW7dAaX8BV7arwbn68GgkkBeiAgPfhMOAFSJWlyY="; + }; + + inherit targetFlutterPlatform; + + flutterBuildFlags = [ + # Required since v2.4.0 + "--enable-experiment=dot-shorthands" + ]; + + meta = { + description = "Chat with your friends (matrix client)"; + homepage = "https://uchar.uz/"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ + mkg20001 + tebriel + aleksana + ]; + badPlatforms = lib.platforms.darwin; + } + // lib.optionalAttrs (targetFlutterPlatform == "linux") { + mainProgram = "uchar"; + }; + } + // lib.optionalAttrs (targetFlutterPlatform == "linux") { + nativeBuildInputs = [ + imagemagick + copyDesktopItems + webkitgtk_4_1 + ]; + + runtimeDependencies = [ pulseaudio ]; + + env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}"; + + desktopItems = [ + (makeDesktopItem { + name = "Uchar"; + exec = "uchar"; + icon = "uchar"; + desktopName = "Uchar"; + genericName = "Chat with your friends (matrix client)"; + categories = [ + "Chat" + "Network" + "InstantMessaging" + ]; + }) + ]; + + customSourceBuilders = { + flutter_webrtc = + { version, src, ... }: + stdenv.mkDerivation { + pname = "flutter_webrtc"; + inherit version src; + inherit (src) passthru; + + postPatch = '' + substituteInPlace third_party/CMakeLists.txt \ + --replace-fail "\''${CMAKE_CURRENT_LIST_DIR}/downloads/libwebrtc.zip" ${libwebrtc} + ln -s ${libwebrtc} third_party/libwebrtc + ''; + + installPhase = '' + runHook preInstall + + mkdir $out + cp -r ./* $out/ + + runHook postInstall + ''; + }; + }; + + # Temporary fix for json deprecation error + # https://github.com/juliansteenbakker/flutter_secure_storage/issues/965 + postPatch = '' + substituteInPlace linux/CMakeLists.txt \ + --replace-fail \ + "PRIVATE -Wall -Werror" \ + "PRIVATE -Wall -Werror -Wno-deprecated" + ''; + + postInstall = '' + FAV=$out/app/uchar-linux/data/flutter_assets/assets/favicon.png + ICO=$out/share/icons + + for size in 24 32 42 64 128 256 512; do + D=$ICO/hicolor/''${size}x''${size}/apps + mkdir -p $D + magick $FAV -resize ''${size}x''${size} $D/uchar.png + done + + patchelf --add-rpath ${libwebrtcRpath} $out/app/uchar-linux/lib/libwebrtc.so + ''; + } + // lib.optionalAttrs (targetFlutterPlatform == "web") { + preBuild = '' + cp -r ${vodozemac-wasm}/* ./assets/vodozemac/ + ''; + } +) diff --git a/nix/pubspec.lock.json b/nix/pubspec.lock.json new file mode 100644 index 0000000000..29e4157be3 --- /dev/null +++ b/nix/pubspec.lock.json @@ -0,0 +1,2976 @@ +{ + "packages": { + "_fe_analyzer_shared": { + "dependency": "transitive", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "91.0.0" + }, + "analyzer": { + "dependency": "transitive", + "description": { + "name": "analyzer", + "sha256": "f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.4.1" + }, + "animations": { + "dependency": "direct main", + "description": { + "name": "animations", + "sha256": "18938cefd7dcc04e1ecac0db78973761a01e4bc2d6bfae0cfa596bfeac9e96ab", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "ansicolor": { + "dependency": "transitive", + "description": { + "name": "ansicolor", + "sha256": "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.3" + }, + "app_links": { + "dependency": "direct main", + "description": { + "name": "app_links", + "sha256": "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.4.1" + }, + "app_links_linux": { + "dependency": "transitive", + "description": { + "name": "app_links_linux", + "sha256": "f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.3" + }, + "app_links_platform_interface": { + "dependency": "transitive", + "description": { + "name": "app_links_platform_interface", + "sha256": "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "app_links_web": { + "dependency": "transitive", + "description": { + "name": "app_links_web", + "sha256": "af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "archive": { + "dependency": "direct main", + "description": { + "name": "archive", + "sha256": "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.7" + }, + "args": { + "dependency": "transitive", + "description": { + "name": "args", + "sha256": "d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.7.0" + }, + "async": { + "dependency": "direct main", + "description": { + "name": "async", + "sha256": "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.13.0" + }, + "audio_session": { + "dependency": "transitive", + "description": { + "name": "audio_session", + "sha256": "8f96a7fecbb718cb093070f868b4cdcb8a9b1053dce342ff8ab2fde10eb9afb7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.2" + }, + "badges": { + "dependency": "direct main", + "description": { + "name": "badges", + "sha256": "a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "barbecue": { + "dependency": "transitive", + "description": { + "name": "barbecue", + "sha256": "e3a0afaf9005e466887d6c87411a2ddd8d72fc46db3caabf278ee600f1e2f92c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.4.0" + }, + "base58check": { + "dependency": "transitive", + "description": { + "name": "base58check", + "sha256": "6c300dfc33e598d2fe26319e13f6243fea81eaf8204cb4c6b69ef20a625319a5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "blurhash_dart": { + "dependency": "direct main", + "description": { + "name": "blurhash_dart", + "sha256": "43955b6c2e30a7d440028d1af0fa185852f3534b795cc6eb81fbf397b464409f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "boolean_selector": { + "dependency": "transitive", + "description": { + "name": "boolean_selector", + "sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "build_cli_annotations": { + "dependency": "transitive", + "description": { + "name": "build_cli_annotations", + "sha256": "e563c2e01de8974566a1998410d3f6f03521788160a02503b0b1f1a46c7b3d95", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "canonical_json": { + "dependency": "transitive", + "description": { + "name": "canonical_json", + "sha256": "d6be1dd66b420c6ac9f42e3693e09edf4ff6edfee26cb4c28c1c019fdb8c0c15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "characters": { + "dependency": "transitive", + "description": { + "name": "characters", + "sha256": "f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "charcode": { + "dependency": "transitive", + "description": { + "name": "charcode", + "sha256": "fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "checked_yaml": { + "dependency": "transitive", + "description": { + "name": "checked_yaml", + "sha256": "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.4" + }, + "chewie": { + "dependency": "direct main", + "description": { + "name": "chewie", + "sha256": "44bcfc5f0dfd1de290c87c9d86a61308b3282a70b63435d5557cfd60f54a69ca", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.13.0" + }, + "cli_config": { + "dependency": "transitive", + "description": { + "name": "cli_config", + "sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "cli_util": { + "dependency": "transitive", + "description": { + "name": "cli_util", + "sha256": "ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.4.2" + }, + "clock": { + "dependency": "transitive", + "description": { + "name": "clock", + "sha256": "fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "collection": { + "dependency": "direct main", + "description": { + "name": "collection", + "sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.19.1" + }, + "colorize": { + "dependency": "transitive", + "description": { + "name": "colorize", + "sha256": "584746cd6ba1cba0633b6720f494fe6f9601c4170f0666c1579d2aa2a61071ba", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "convert": { + "dependency": "transitive", + "description": { + "name": "convert", + "sha256": "b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "coverage": { + "dependency": "transitive", + "description": { + "name": "coverage", + "sha256": "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.15.0" + }, + "cross_file": { + "dependency": "direct main", + "description": { + "name": "cross_file", + "sha256": "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.5+1" + }, + "crypto": { + "dependency": "transitive", + "description": { + "name": "crypto", + "sha256": "c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.7" + }, + "csslib": { + "dependency": "transitive", + "description": { + "name": "csslib", + "sha256": "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.2" + }, + "cupertino_icons": { + "dependency": "direct main", + "description": { + "name": "cupertino_icons", + "sha256": "ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.8" + }, + "dart_earcut": { + "dependency": "transitive", + "description": { + "name": "dart_earcut", + "sha256": "e485001bfc05dcbc437d7bfb666316182e3522d4c3f9668048e004d0eb2ce43b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "dart_polylabel2": { + "dependency": "transitive", + "description": { + "name": "dart_polylabel2", + "sha256": "7eeab15ce72894e4bdba6a8765712231fc81be0bd95247de4ad9966abc57adc6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "dart_webrtc": { + "dependency": "transitive", + "description": { + "name": "dart_webrtc", + "sha256": "4ed7b9fa9924e5a81eb39271e2c2356739dd1039d60a13b86ba6c5f448625086", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.7.0" + }, + "dbus": { + "dependency": "transitive", + "description": { + "name": "dbus", + "sha256": "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.11" + }, + "desktop_drop": { + "dependency": "direct main", + "description": { + "name": "desktop_drop", + "sha256": "e70b46b2d61f1af7a81a40d1f79b43c28a879e30a4ef31e87e9c27bea4d784e8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.0" + }, + "desktop_notifications": { + "dependency": "direct main", + "description": { + "name": "desktop_notifications", + "sha256": "6d92694ad6e9297a862c5ff7dd6b8ff64c819972557754769f819d2209612927", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.3" + }, + "desktop_webview_window": { + "dependency": "transitive", + "description": { + "name": "desktop_webview_window", + "sha256": "57cf20d81689d5cbb1adfd0017e96b669398a669d927906073b0e42fc64111c0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.3" + }, + "device_info_plus": { + "dependency": "direct main", + "description": { + "name": "device_info_plus", + "sha256": "4df8babf73058181227e18b08e6ea3520cf5fc5d796888d33b7cb0f33f984b7c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "12.3.0" + }, + "device_info_plus_platform_interface": { + "dependency": "transitive", + "description": { + "name": "device_info_plus_platform_interface", + "sha256": "e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.3" + }, + "dynamic_color": { + "dependency": "direct main", + "description": { + "name": "dynamic_color", + "sha256": "43a5a6679649a7731ab860334a5812f2067c2d9ce6452cf069c5e0c25336c17c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.8.1" + }, + "emoji_picker_flutter": { + "dependency": "direct main", + "description": { + "name": "emoji_picker_flutter", + "sha256": "984d3e9b9cf3175df9a868ce4a2d9611491e80e5d3b8e2b1e8991a4998972885", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.4.0" + }, + "fake_async": { + "dependency": "transitive", + "description": { + "name": "fake_async", + "sha256": "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.3" + }, + "fcm_shared_isolate": { + "dependency": "direct main", + "description": { + "name": "fcm_shared_isolate", + "sha256": "18dc57d9ce7fa6b250f857ef8c823b3f7f1d1b428584557c1e9f2064e9227f6b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "ffi": { + "dependency": "transitive", + "description": { + "name": "ffi", + "sha256": "d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.5" + }, + "file": { + "dependency": "transitive", + "description": { + "name": "file", + "sha256": "a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.1" + }, + "file_picker": { + "dependency": "direct main", + "description": { + "name": "file_picker", + "sha256": "57d9a1dd5063f85fa3107fb42d1faffda52fdc948cefd5fe5ea85267a5fc7343", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "10.3.10" + }, + "file_selector": { + "dependency": "direct main", + "description": { + "name": "file_selector", + "sha256": "bd15e43e9268db636b53eeaca9f56324d1622af30e5c34d6e267649758c84d9a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "file_selector_android": { + "dependency": "transitive", + "description": { + "name": "file_selector_android", + "sha256": "51e8fd0446de75e4b62c065b76db2210c704562d072339d333bd89c57a7f8a7c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.2+4" + }, + "file_selector_ios": { + "dependency": "transitive", + "description": { + "name": "file_selector_ios", + "sha256": "e2ecf2885c121691ce13b60db3508f53c01f869fb6e8dc5c1cfa771e4c46aeca", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.3+5" + }, + "file_selector_linux": { + "dependency": "transitive", + "description": { + "name": "file_selector_linux", + "sha256": "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.9.4" + }, + "file_selector_macos": { + "dependency": "transitive", + "description": { + "name": "file_selector_macos", + "sha256": "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.9.5" + }, + "file_selector_platform_interface": { + "dependency": "transitive", + "description": { + "name": "file_selector_platform_interface", + "sha256": "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.7.0" + }, + "file_selector_web": { + "dependency": "transitive", + "description": { + "name": "file_selector_web", + "sha256": "c4c0ea4224d97a60a7067eca0c8fd419e708ff830e0c83b11a48faf566cec3e7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.9.4+2" + }, + "file_selector_windows": { + "dependency": "transitive", + "description": { + "name": "file_selector_windows", + "sha256": "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.9.3+5" + }, + "firebase_core": { + "dependency": "transitive", + "description": { + "name": "firebase_core", + "sha256": "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.32.0" + }, + "firebase_core_platform_interface": { + "dependency": "transitive", + "description": { + "name": "firebase_core_platform_interface", + "sha256": "8bcfad6d7033f5ea951d15b867622a824b13812178bfec0c779b9d81de011bbb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.4.2" + }, + "firebase_core_web": { + "dependency": "transitive", + "description": { + "name": "firebase_core_web", + "sha256": "eb3afccfc452b2b2075acbe0c4b27de62dd596802b4e5e19869c1e926cbb20b3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.24.0" + }, + "fixnum": { + "dependency": "transitive", + "description": { + "name": "fixnum", + "sha256": "b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "flutter": { + "dependency": "direct main", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "flutter_callkit_incoming": { + "dependency": "direct main", + "description": { + "name": "flutter_callkit_incoming", + "sha256": "3589deb8b71e43f2d520a9c8a5240243f611062a8b246cdca4b1fda01fbbf9b8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "flutter_driver": { + "dependency": "transitive", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "flutter_foreground_task": { + "dependency": "direct main", + "description": { + "name": "flutter_foreground_task", + "sha256": "48ea45056155a99fb30b15f14f4039a044d925bc85f381ed0b2d3b00a60b99de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "9.2.0" + }, + "flutter_highlighter": { + "dependency": "direct main", + "description": { + "name": "flutter_highlighter", + "sha256": "93173afd47a9ada53f3176371755e7ea4a1065362763976d06d6adfb4d946e10", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.1" + }, + "flutter_inappwebview": { + "dependency": "direct main", + "description": { + "name": "flutter_inappwebview", + "sha256": "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.5" + }, + "flutter_inappwebview_android": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_android", + "sha256": "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "flutter_inappwebview_internal_annotations": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_internal_annotations", + "sha256": "e30fba942e3debea7b7e6cdd4f0f59ce89dd403a9865193e3221293b6d1544c6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "flutter_inappwebview_ios": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_ios", + "sha256": "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "flutter_inappwebview_macos": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_macos", + "sha256": "c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "flutter_inappwebview_platform_interface": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_platform_interface", + "sha256": "cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0+1" + }, + "flutter_inappwebview_web": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_web", + "sha256": "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "flutter_inappwebview_windows": { + "dependency": "transitive", + "description": { + "name": "flutter_inappwebview_windows", + "sha256": "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.0" + }, + "flutter_launcher_icons": { + "dependency": "direct main", + "description": { + "name": "flutter_launcher_icons", + "sha256": "10f13781741a2e3972126fae08393d3c4e01fa4cd7473326b94b72cf594195e7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.14.4" + }, + "flutter_linkify": { + "dependency": "direct main", + "description": { + "name": "flutter_linkify", + "sha256": "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.0" + }, + "flutter_lints": { + "dependency": "direct dev", + "description": { + "name": "flutter_lints", + "sha256": "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.0" + }, + "flutter_local_notifications": { + "dependency": "direct main", + "description": { + "name": "flutter_local_notifications", + "sha256": "2b50e938a275e1ad77352d6a25e25770f4130baa61eaf02de7a9a884680954ad", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "20.1.0" + }, + "flutter_local_notifications_linux": { + "dependency": "transitive", + "description": { + "name": "flutter_local_notifications_linux", + "sha256": "dce0116868cedd2cdf768af0365fc37ff1cbef7c02c4f51d0587482e625868d0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.0" + }, + "flutter_local_notifications_platform_interface": { + "dependency": "transitive", + "description": { + "name": "flutter_local_notifications_platform_interface", + "sha256": "23de31678a48c084169d7ae95866df9de5c9d2a44be3e5915a2ff067aeeba899", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "10.0.0" + }, + "flutter_local_notifications_windows": { + "dependency": "transitive", + "description": { + "name": "flutter_local_notifications_windows", + "sha256": "e97a1a3016512437d9c0b12fae7d1491c3c7b9aa7f03a69b974308840656b02a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "flutter_localizations": { + "dependency": "direct main", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "flutter_map": { + "dependency": "direct main", + "description": { + "name": "flutter_map", + "sha256": "391e7dc95cc3f5190748210a69d4cfeb5d8f84dcdfa9c3235d0a9d7742ccb3f8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.2.2" + }, + "flutter_native_splash": { + "dependency": "direct dev", + "description": { + "name": "flutter_native_splash", + "sha256": "4fb9f4113350d3a80841ce05ebf1976a36de622af7d19aca0ca9a9911c7ff002", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.7" + }, + "flutter_new_badger": { + "dependency": "direct main", + "description": { + "name": "flutter_new_badger", + "sha256": "d3742ace8009663db1ac6ba0377b092f479c35deb33e05514ba05cc0b0a5aaaa", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "flutter_plugin_android_lifecycle": { + "dependency": "transitive", + "description": { + "name": "flutter_plugin_android_lifecycle", + "sha256": "ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.33" + }, + "flutter_rust_bridge": { + "dependency": "transitive", + "description": { + "name": "flutter_rust_bridge", + "sha256": "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.11.1" + }, + "flutter_secure_storage": { + "dependency": "direct main", + "description": { + "name": "flutter_secure_storage", + "sha256": "da922f2aab2d733db7e011a6bcc4a825b844892d4edd6df83ff156b09a9b2e40", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "10.0.0" + }, + "flutter_secure_storage_darwin": { + "dependency": "transitive", + "description": { + "name": "flutter_secure_storage_darwin", + "sha256": "8878c25136a79def1668c75985e8e193d9d7d095453ec28730da0315dc69aee3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "flutter_secure_storage_linux": { + "dependency": "transitive", + "description": { + "name": "flutter_secure_storage_linux", + "sha256": "2b5c76dce569ab752d55a1cee6a2242bcc11fdba927078fb88c503f150767cda", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "flutter_secure_storage_platform_interface": { + "dependency": "transitive", + "description": { + "name": "flutter_secure_storage_platform_interface", + "sha256": "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "flutter_secure_storage_web": { + "dependency": "transitive", + "description": { + "name": "flutter_secure_storage_web", + "sha256": "6a1137df62b84b54261dca582c1c09ea72f4f9a4b2fcee21b025964132d5d0c3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "flutter_secure_storage_windows": { + "dependency": "transitive", + "description": { + "name": "flutter_secure_storage_windows", + "sha256": "3b7c8e068875dfd46719ff57c90d8c459c87f2302ed6b00ff006b3c9fcad1613", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.0" + }, + "flutter_shortcuts_new": { + "dependency": "direct main", + "description": { + "name": "flutter_shortcuts_new", + "sha256": "16ee1c8a9bc9586b5117ebb774a8ff6b396f856743e97251eb483c4dc5769d7f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "flutter_test": { + "dependency": "direct dev", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "flutter_vodozemac": { + "dependency": "direct main", + "description": { + "name": "flutter_vodozemac", + "sha256": "ef4c3580a7f2fe8eebb7602c6cba593a42b4a5e5466c372a022f77ccc14914a5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.0" + }, + "flutter_web_auth_2": { + "dependency": "direct main", + "description": { + "name": "flutter_web_auth_2", + "sha256": "432ff8c7b2834eaeec3378d99e24a0210b9ac2f453b3f7a7d739a5c09069fba3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.1" + }, + "flutter_web_auth_2_platform_interface": { + "dependency": "transitive", + "description": { + "name": "flutter_web_auth_2_platform_interface", + "sha256": "ba0fbba55bffb47242025f96852ad1ffba34bc451568f56ef36e613612baffab", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.0" + }, + "flutter_web_plugins": { + "dependency": "transitive", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "flutter_webrtc": { + "dependency": "direct main", + "description": { + "name": "flutter_webrtc", + "sha256": "0f86b518e9349e71a136a96e0ea11294cad8a8531b2bc9ae99e69df332ac898a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "frontend_server_client": { + "dependency": "transitive", + "description": { + "name": "frontend_server_client", + "sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "fuchsia_remote_debug_protocol": { + "dependency": "transitive", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "geoclue": { + "dependency": "transitive", + "description": { + "name": "geoclue", + "sha256": "c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.1" + }, + "geolocator": { + "dependency": "direct main", + "description": { + "name": "geolocator", + "sha256": "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "14.0.2" + }, + "geolocator_android": { + "dependency": "transitive", + "description": { + "name": "geolocator_android", + "sha256": "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.2" + }, + "geolocator_apple": { + "dependency": "transitive", + "description": { + "name": "geolocator_apple", + "sha256": "dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.13" + }, + "geolocator_linux": { + "dependency": "transitive", + "description": { + "name": "geolocator_linux", + "sha256": "d64112a205931926f4363bb6bd48f14cb38e7326833041d170615586cd143797", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.4" + }, + "geolocator_platform_interface": { + "dependency": "transitive", + "description": { + "name": "geolocator_platform_interface", + "sha256": "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.2.6" + }, + "geolocator_web": { + "dependency": "transitive", + "description": { + "name": "geolocator_web", + "sha256": "b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.3" + }, + "geolocator_windows": { + "dependency": "transitive", + "description": { + "name": "geolocator_windows", + "sha256": "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.5" + }, + "glob": { + "dependency": "transitive", + "description": { + "name": "glob", + "sha256": "c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.3" + }, + "go_router": { + "dependency": "direct main", + "description": { + "name": "go_router", + "sha256": "7974313e217a7771557add6ff2238acb63f635317c35fa590d348fb238f00896", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "17.1.0" + }, + "gsettings": { + "dependency": "transitive", + "description": { + "name": "gsettings", + "sha256": "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.8" + }, + "gtk": { + "dependency": "transitive", + "description": { + "name": "gtk", + "sha256": "e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "handy_window": { + "dependency": "direct main", + "description": { + "name": "handy_window", + "sha256": "56b813e58a68b0ee2ab22051400b8b1f1b5cfe88b8cd32288623defb3926245a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.4.0" + }, + "highlight": { + "dependency": "direct main", + "description": { + "name": "highlight", + "sha256": "5353a83ffe3e3eca7df0abfb72dcf3fa66cc56b953728e7113ad4ad88497cf21", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.0" + }, + "highlighter": { + "dependency": "transitive", + "description": { + "name": "highlighter", + "sha256": "92180c72b9da8758e1acf39a45aa305a97dcfe2fdc8f3d1d2947c23f2772bfbc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.1" + }, + "html": { + "dependency": "direct main", + "description": { + "name": "html", + "sha256": "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.15.6" + }, + "html_unescape": { + "dependency": "transitive", + "description": { + "name": "html_unescape", + "sha256": "15362d7a18f19d7b742ef8dcb811f5fd2a2df98db9f80ea393c075189e0b61e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "http": { + "dependency": "direct main", + "description": { + "name": "http", + "sha256": "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.6.0" + }, + "http_multi_server": { + "dependency": "transitive", + "description": { + "name": "http_multi_server", + "sha256": "aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.2" + }, + "http_parser": { + "dependency": "transitive", + "description": { + "name": "http_parser", + "sha256": "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.2" + }, + "image": { + "dependency": "direct main", + "description": { + "name": "image", + "sha256": "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.7.2" + }, + "image_picker": { + "dependency": "direct main", + "description": { + "name": "image_picker", + "sha256": "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "image_picker_android": { + "dependency": "transitive", + "description": { + "name": "image_picker_android", + "sha256": "5e9bf126c37c117cf8094215373c6d561117a3cfb50ebc5add1a61dc6e224677", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.8.13+10" + }, + "image_picker_for_web": { + "dependency": "transitive", + "description": { + "name": "image_picker_for_web", + "sha256": "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.1" + }, + "image_picker_ios": { + "dependency": "transitive", + "description": { + "name": "image_picker_ios", + "sha256": "956c16a42c0c708f914021666ffcd8265dde36e673c9fa68c81f7d085d9774ad", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.8.13+3" + }, + "image_picker_linux": { + "dependency": "transitive", + "description": { + "name": "image_picker_linux", + "sha256": "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.2" + }, + "image_picker_macos": { + "dependency": "transitive", + "description": { + "name": "image_picker_macos", + "sha256": "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.2+1" + }, + "image_picker_platform_interface": { + "dependency": "transitive", + "description": { + "name": "image_picker_platform_interface", + "sha256": "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.11.1" + }, + "image_picker_windows": { + "dependency": "transitive", + "description": { + "name": "image_picker_windows", + "sha256": "d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.2" + }, + "import_sorter": { + "dependency": "direct dev", + "description": { + "name": "import_sorter", + "sha256": "eb15738ccead84e62c31e0208ea4e3104415efcd4972b86906ca64a1187d0836", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.6.0" + }, + "integration_test": { + "dependency": "direct dev", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "intl": { + "dependency": "direct main", + "description": { + "name": "intl", + "sha256": "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.20.2" + }, + "io": { + "dependency": "transitive", + "description": { + "name": "io", + "sha256": "dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.5" + }, + "js": { + "dependency": "transitive", + "description": { + "name": "js", + "sha256": "f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.7" + }, + "json_annotation": { + "dependency": "transitive", + "description": { + "name": "json_annotation", + "sha256": "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.9.0" + }, + "just_audio": { + "dependency": "direct main", + "description": { + "name": "just_audio", + "sha256": "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.5" + }, + "just_audio_platform_interface": { + "dependency": "transitive", + "description": { + "name": "just_audio_platform_interface", + "sha256": "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.6.0" + }, + "just_audio_web": { + "dependency": "transitive", + "description": { + "name": "just_audio_web", + "sha256": "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.4.16" + }, + "language_picker": { + "dependency": "direct main", + "description": { + "name": "language_picker", + "sha256": "cace0eab53b712e26f5d2cd834a050b6dd6ab56b2ba31b3000dbe5f89f33f5fd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.4.5" + }, + "latlong2": { + "dependency": "direct main", + "description": { + "name": "latlong2", + "sha256": "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.9.1" + }, + "leak_tracker": { + "dependency": "transitive", + "description": { + "name": "leak_tracker", + "sha256": "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "11.0.2" + }, + "leak_tracker_flutter_testing": { + "dependency": "transitive", + "description": { + "name": "leak_tracker_flutter_testing", + "sha256": "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.10" + }, + "leak_tracker_testing": { + "dependency": "transitive", + "description": { + "name": "leak_tracker_testing", + "sha256": "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "license_checker": { + "dependency": "direct dev", + "description": { + "name": "license_checker", + "sha256": "8a35b6946e50811e070ac6fe4717ee431cd1a334e080df2116956b54b0bb0d0f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.6.2" + }, + "linkify": { + "dependency": "direct main", + "description": { + "name": "linkify", + "sha256": "4139ea77f4651ab9c315b577da2dd108d9aa0bd84b5d03d33323f1970c645832", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.0" + }, + "lints": { + "dependency": "transitive", + "description": { + "name": "lints", + "sha256": "a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.0" + }, + "lists": { + "dependency": "transitive", + "description": { + "name": "lists", + "sha256": "4ca5c19ae4350de036a7e996cdd1ee39c93ac0a2b840f4915459b7d0a7d4ab27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "logger": { + "dependency": "transitive", + "description": { + "name": "logger", + "sha256": "a7967e31b703831a893bbc3c3dd11db08126fe5f369b5c648a36f821979f5be3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.6.2" + }, + "logging": { + "dependency": "transitive", + "description": { + "name": "logging", + "sha256": "c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "markdown": { + "dependency": "transitive", + "description": { + "name": "markdown", + "sha256": "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.3.0" + }, + "matcher": { + "dependency": "transitive", + "description": { + "name": "matcher", + "sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.17" + }, + "material_color_utilities": { + "dependency": "transitive", + "description": { + "name": "material_color_utilities", + "sha256": "f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.11.1" + }, + "matrix": { + "dependency": "direct main", + "description": { + "name": "matrix", + "sha256": "c0214ee99a73957d3c02d54a60afcf9acee577b0924749085d6fdf556e8eba42", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.1" + }, + "meta": { + "dependency": "transitive", + "description": { + "name": "meta", + "sha256": "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.17.0" + }, + "mgrs_dart": { + "dependency": "transitive", + "description": { + "name": "mgrs_dart", + "sha256": "fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "mime": { + "dependency": "direct main", + "description": { + "name": "mime", + "sha256": "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "nested": { + "dependency": "transitive", + "description": { + "name": "nested", + "sha256": "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "node_preamble": { + "dependency": "transitive", + "description": { + "name": "node_preamble", + "sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "opus_caf_converter_dart": { + "dependency": "direct main", + "description": { + "name": "opus_caf_converter_dart", + "sha256": "e08156066916f790a54df305e103d6dec4d853ec23147e6a02eda3c06f67ba1a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "package_config": { + "dependency": "transitive", + "description": { + "name": "package_config", + "sha256": "f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "package_info_plus": { + "dependency": "direct main", + "description": { + "name": "package_info_plus", + "sha256": "f69da0d3189a4b4ceaeb1a3defb0f329b3b352517f52bed4290f83d4f06bc08d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "9.0.0" + }, + "package_info_plus_platform_interface": { + "dependency": "transitive", + "description": { + "name": "package_info_plus_platform_interface", + "sha256": "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.1" + }, + "pana": { + "dependency": "transitive", + "description": { + "name": "pana", + "sha256": "124ebeaf5b9178da3a0da2e4053452f6324f0ed6ae8cdf52d515568f866598cb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.23.6" + }, + "particles_network": { + "dependency": "direct main", + "description": { + "name": "particles_network", + "sha256": "fbaead7961925946ff83e5b441bdbc8628139ea161ce901547e6f1190a6161de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.3" + }, + "path": { + "dependency": "direct main", + "description": { + "name": "path", + "sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.1" + }, + "path_provider": { + "dependency": "direct main", + "description": { + "name": "path_provider", + "sha256": "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.5" + }, + "path_provider_android": { + "dependency": "transitive", + "description": { + "name": "path_provider_android", + "sha256": "f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.22" + }, + "path_provider_foundation": { + "dependency": "transitive", + "description": { + "name": "path_provider_foundation", + "sha256": "6d13aece7b3f5c5a9731eaf553ff9dcbc2eff41087fd2df587fd0fed9a3eb0c4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.5.1" + }, + "path_provider_linux": { + "dependency": "transitive", + "description": { + "name": "path_provider_linux", + "sha256": "f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.1" + }, + "path_provider_platform_interface": { + "dependency": "transitive", + "description": { + "name": "path_provider_platform_interface", + "sha256": "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "path_provider_windows": { + "dependency": "transitive", + "description": { + "name": "path_provider_windows", + "sha256": "bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.0" + }, + "permission_handler": { + "dependency": "direct main", + "description": { + "name": "permission_handler", + "sha256": "bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "12.0.1" + }, + "permission_handler_android": { + "dependency": "transitive", + "description": { + "name": "permission_handler_android", + "sha256": "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "13.0.1" + }, + "permission_handler_apple": { + "dependency": "transitive", + "description": { + "name": "permission_handler_apple", + "sha256": "f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "9.4.7" + }, + "permission_handler_html": { + "dependency": "transitive", + "description": { + "name": "permission_handler_html", + "sha256": "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.3+5" + }, + "permission_handler_platform_interface": { + "dependency": "transitive", + "description": { + "name": "permission_handler_platform_interface", + "sha256": "eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.3.0" + }, + "permission_handler_windows": { + "dependency": "transitive", + "description": { + "name": "permission_handler_windows", + "sha256": "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.1" + }, + "petitparser": { + "dependency": "transitive", + "description": { + "name": "petitparser", + "sha256": "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.1" + }, + "platform": { + "dependency": "transitive", + "description": { + "name": "platform", + "sha256": "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.6" + }, + "plugin_platform_interface": { + "dependency": "transitive", + "description": { + "name": "plugin_platform_interface", + "sha256": "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.8" + }, + "pool": { + "dependency": "transitive", + "description": { + "name": "pool", + "sha256": "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.2" + }, + "posix": { + "dependency": "transitive", + "description": { + "name": "posix", + "sha256": "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.0.3" + }, + "pretty_qr_code": { + "dependency": "direct main", + "description": { + "name": "pretty_qr_code", + "sha256": "474f8a4512113fba06f14a6ec9bbf42353b4e651d7a520e3096f2a9b6bbe7a8a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.6.0" + }, + "process": { + "dependency": "transitive", + "description": { + "name": "process", + "sha256": "c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.5" + }, + "proj4dart": { + "dependency": "transitive", + "description": { + "name": "proj4dart", + "sha256": "c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "provider": { + "dependency": "direct main", + "description": { + "name": "provider", + "sha256": "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.5+1" + }, + "pub_semver": { + "dependency": "transitive", + "description": { + "name": "pub_semver", + "sha256": "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "pubspec_parse": { + "dependency": "transitive", + "description": { + "name": "pubspec_parse", + "sha256": "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.0" + }, + "punycode": { + "dependency": "direct main", + "description": { + "name": "punycode", + "sha256": "39b874cc1f78b94e57db17e74b3f2ba2a96e25c0bebdcc8a571614dccda0ff0c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "qr": { + "dependency": "transitive", + "description": { + "name": "qr", + "sha256": "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "qr_code_scanner_plus": { + "dependency": "direct main", + "description": { + "name": "qr_code_scanner_plus", + "sha256": "dae0596b2763c2fd0294f5cfddb1d3a21577ae4dc7fc1449eb5aafc957872f61", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.1" + }, + "qr_image": { + "dependency": "direct main", + "description": { + "name": "qr_image", + "sha256": "c3cd2ac2c6cd6b14604c97b45c477b18988b6518f72120fa04418fc54e3b0d76", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "random_string": { + "dependency": "transitive", + "description": { + "name": "random_string", + "sha256": "03b52435aae8cbdd1056cf91bfc5bf845e9706724dd35ae2e99fa14a1ef79d02", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.1" + }, + "recase": { + "dependency": "transitive", + "description": { + "name": "recase", + "sha256": "e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.0" + }, + "receive_sharing_intent": { + "dependency": "direct main", + "description": { + "name": "receive_sharing_intent", + "sha256": "ec76056e4d258ad708e76d85591d933678625318e411564dcb9059048ca3a593", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.8.1" + }, + "record": { + "dependency": "direct main", + "description": { + "name": "record", + "sha256": "6bad72fb3ea6708d724cf8b6c97c4e236cf9f43a52259b654efeb6fd9b737f1f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.2" + }, + "record_android": { + "dependency": "transitive", + "description": { + "name": "record_android", + "sha256": "9aaf3f151e61399b09bd7c31eb5f78253d2962b3f57af019ac5a2d1a3afdcf71", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.5" + }, + "record_ios": { + "dependency": "transitive", + "description": { + "name": "record_ios", + "sha256": "69fcd37c6185834e90254573599a9165db18a2cbfa266b6d1e46ffffeb06a28c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.5" + }, + "record_linux": { + "dependency": "transitive", + "description": { + "name": "record_linux", + "sha256": "235b1f1fb84e810f8149cc0c2c731d7d697f8d1c333b32cb820c449bf7bb72d8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "record_macos": { + "dependency": "transitive", + "description": { + "name": "record_macos", + "sha256": "842ea4b7e95f4dd237aacffc686d1b0ff4277e3e5357865f8d28cd28bc18ed95", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "record_platform_interface": { + "dependency": "transitive", + "description": { + "name": "record_platform_interface", + "sha256": "b0065fdf1ec28f5a634d676724d388a77e43ce7646fb049949f58c69f3fcb4ed", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "record_web": { + "dependency": "transitive", + "description": { + "name": "record_web", + "sha256": "3feeffbc0913af3021da9810bb8702a068db6bc9da52dde1d19b6ee7cb9edb51", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.2" + }, + "record_windows": { + "dependency": "transitive", + "description": { + "name": "record_windows", + "sha256": "223258060a1d25c62bae18282c16783f28581ec19401d17e56b5205b9f039d78", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.7" + }, + "retry": { + "dependency": "transitive", + "description": { + "name": "retry", + "sha256": "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "rxdart": { + "dependency": "transitive", + "description": { + "name": "rxdart", + "sha256": "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.28.0" + }, + "safe_url_check": { + "dependency": "transitive", + "description": { + "name": "safe_url_check", + "sha256": "49a3e060a7869cbafc8f4845ca1ecbbaaa53179980a32f4fdfeab1607e90f41d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "screen_retriever": { + "dependency": "transitive", + "description": { + "name": "screen_retriever", + "sha256": "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "screen_retriever_linux": { + "dependency": "transitive", + "description": { + "name": "screen_retriever_linux", + "sha256": "f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "screen_retriever_macos": { + "dependency": "transitive", + "description": { + "name": "screen_retriever_macos", + "sha256": "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "screen_retriever_platform_interface": { + "dependency": "transitive", + "description": { + "name": "screen_retriever_platform_interface", + "sha256": "ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "screen_retriever_windows": { + "dependency": "transitive", + "description": { + "name": "screen_retriever_windows", + "sha256": "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "scroll_to_index": { + "dependency": "direct main", + "description": { + "name": "scroll_to_index", + "sha256": "b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.1" + }, + "sdp_transform": { + "dependency": "transitive", + "description": { + "name": "sdp_transform", + "sha256": "73e412a5279a5c2de74001535208e20fff88f225c9a4571af0f7146202755e45", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.2" + }, + "share_plus": { + "dependency": "direct main", + "description": { + "name": "share_plus", + "sha256": "14c8860d4de93d3a7e53af51bff479598c4e999605290756bbbe45cf65b37840", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "12.0.1" + }, + "share_plus_platform_interface": { + "dependency": "transitive", + "description": { + "name": "share_plus_platform_interface", + "sha256": "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.0" + }, + "shared_preferences": { + "dependency": "direct main", + "description": { + "name": "shared_preferences", + "sha256": "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.5.4" + }, + "shared_preferences_android": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_android", + "sha256": "83af5c682796c0f7719c2bbf74792d113e40ae97981b8f266fa84574573556bc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.18" + }, + "shared_preferences_foundation": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_foundation", + "sha256": "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.5.6" + }, + "shared_preferences_linux": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_linux", + "sha256": "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.1" + }, + "shared_preferences_platform_interface": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_platform_interface", + "sha256": "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.1" + }, + "shared_preferences_web": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_web", + "sha256": "c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.3" + }, + "shared_preferences_windows": { + "dependency": "transitive", + "description": { + "name": "shared_preferences_windows", + "sha256": "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.1" + }, + "shelf": { + "dependency": "transitive", + "description": { + "name": "shelf", + "sha256": "e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.2" + }, + "shelf_packages_handler": { + "dependency": "transitive", + "description": { + "name": "shelf_packages_handler", + "sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "shelf_static": { + "dependency": "transitive", + "description": { + "name": "shelf_static", + "sha256": "c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "shelf_web_socket": { + "dependency": "transitive", + "description": { + "name": "shelf_web_socket", + "sha256": "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "sky_engine": { + "dependency": "transitive", + "description": "flutter", + "source": "sdk", + "version": "0.0.0" + }, + "slugify": { + "dependency": "direct main", + "description": { + "name": "slugify", + "sha256": "b272501565cb28050cac2d96b7bf28a2d24c8dae359280361d124f3093d337c3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "source_map_stack_trace": { + "dependency": "transitive", + "description": { + "name": "source_map_stack_trace", + "sha256": "c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "source_maps": { + "dependency": "transitive", + "description": { + "name": "source_maps", + "sha256": "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.13" + }, + "source_span": { + "dependency": "transitive", + "description": { + "name": "source_span", + "sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.10.1" + }, + "sqflite_common": { + "dependency": "transitive", + "description": { + "name": "sqflite_common", + "sha256": "6ef422a4525ecc601db6c0a2233ff448c731307906e92cabc9ba292afaae16a6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.5.6" + }, + "sqflite_common_ffi": { + "dependency": "direct main", + "description": { + "name": "sqflite_common_ffi", + "sha256": "8d7b8749a516cbf6e9057f9b480b716ad14fc4f3d3873ca6938919cc626d9025", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.7+1" + }, + "sqlcipher_flutter_libs": { + "dependency": "direct main", + "description": { + "name": "sqlcipher_flutter_libs", + "sha256": "dd1fcc74d5baf3c36ad53e2652b2d06c9f8747494a3ccde0076e88b159dfe622", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.8" + }, + "sqlite3": { + "dependency": "transitive", + "description": { + "name": "sqlite3", + "sha256": "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.9.4" + }, + "stack_trace": { + "dependency": "transitive", + "description": { + "name": "stack_trace", + "sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.12.1" + }, + "stream_channel": { + "dependency": "transitive", + "description": { + "name": "stream_channel", + "sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "string_scanner": { + "dependency": "transitive", + "description": { + "name": "string_scanner", + "sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.1" + }, + "string_validator": { + "dependency": "transitive", + "description": { + "name": "string_validator", + "sha256": "50dd8ecf91db6a732f4a851eeae81ee12406eedc62d0da72f2d91a04a2d10dd8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.0" + }, + "sync_http": { + "dependency": "transitive", + "description": { + "name": "sync_http", + "sha256": "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "synchronized": { + "dependency": "transitive", + "description": { + "name": "synchronized", + "sha256": "c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.4.0" + }, + "term_glyph": { + "dependency": "transitive", + "description": { + "name": "term_glyph", + "sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.2" + }, + "test": { + "dependency": "transitive", + "description": { + "name": "test", + "sha256": "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.26.3" + }, + "test_api": { + "dependency": "transitive", + "description": { + "name": "test_api", + "sha256": "ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.7" + }, + "test_core": { + "dependency": "transitive", + "description": { + "name": "test_core", + "sha256": "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.12" + }, + "timezone": { + "dependency": "transitive", + "description": { + "name": "timezone", + "sha256": "dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.1" + }, + "tint": { + "dependency": "transitive", + "description": { + "name": "tint", + "sha256": "9652d9a589f4536d5e392cf790263d120474f15da3cf1bee7f1fdb31b4de5f46", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "translations_cleaner": { + "dependency": "direct dev", + "description": { + "name": "translations_cleaner", + "sha256": "811f42be32f024fdf083903f198d3625f6ee6927601e3a53a29b85b90508b88c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.1.0" + }, + "typed_data": { + "dependency": "transitive", + "description": { + "name": "typed_data", + "sha256": "f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "unicode": { + "dependency": "transitive", + "description": { + "name": "unicode", + "sha256": "0f69e46593d65245774d4f17125c6084d2c20b4e473a983f6e21b7d7762218f1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "unifiedpush": { + "dependency": "direct main", + "description": { + "name": "unifiedpush", + "sha256": "8ed9767f750a1dc6159a77e2171641d0cb825dc87682d1ce1b8618689b79f58e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.2.0" + }, + "unifiedpush_android": { + "dependency": "transitive", + "description": { + "name": "unifiedpush_android", + "sha256": "2e6684e0a1a39ad8d6c7bc0d197954d50686acb1b1a7614b18ab0e0126f5492a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.4.1" + }, + "unifiedpush_linux": { + "dependency": "transitive", + "description": { + "name": "unifiedpush_linux", + "sha256": "c062d5eedd1cec70bcd33270cc4e01ae0ff6501f33d471167c06b34a968adfeb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "unifiedpush_platform_interface": { + "dependency": "transitive", + "description": { + "name": "unifiedpush_platform_interface", + "sha256": "83372bc8d794b8b12ef6993b518d7be907dcfc2191bdf6de0ece5c4445d89880", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "unifiedpush_storage_interface": { + "dependency": "transitive", + "description": { + "name": "unifiedpush_storage_interface", + "sha256": "b8d423a4695efc616aa21d8ab48fb5ef99d6288c68b56282b8faac1579ceabd9", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "unifiedpush_ui": { + "dependency": "direct main", + "description": { + "name": "unifiedpush_ui", + "sha256": "1b36b2aa0bc6b61577e2661c1183bd3442969ecf77b4c78174796d324f66dd1d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "universal_html": { + "dependency": "direct main", + "description": { + "name": "universal_html", + "sha256": "c0bcae5c733c60f26c7dfc88b10b0fd27cbcc45cb7492311cdaa6067e21c9cd4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.0" + }, + "universal_io": { + "dependency": "transitive", + "description": { + "name": "universal_io", + "sha256": "f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.1" + }, + "universal_platform": { + "dependency": "transitive", + "description": { + "name": "universal_platform", + "sha256": "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "unorm_dart": { + "dependency": "transitive", + "description": { + "name": "unorm_dart", + "sha256": "5b35bff83fce4d76467641438f9e867dc9bcfdb8c1694854f230579d68cd8f4b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "url_launcher": { + "dependency": "direct main", + "description": { + "name": "url_launcher", + "sha256": "f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.3.2" + }, + "url_launcher_android": { + "dependency": "transitive", + "description": { + "name": "url_launcher_android", + "sha256": "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.3.28" + }, + "url_launcher_ios": { + "dependency": "transitive", + "description": { + "name": "url_launcher_ios", + "sha256": "cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.3.6" + }, + "url_launcher_linux": { + "dependency": "transitive", + "description": { + "name": "url_launcher_linux", + "sha256": "d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.2" + }, + "url_launcher_macos": { + "dependency": "transitive", + "description": { + "name": "url_launcher_macos", + "sha256": "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.5" + }, + "url_launcher_platform_interface": { + "dependency": "transitive", + "description": { + "name": "url_launcher_platform_interface", + "sha256": "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.2" + }, + "url_launcher_web": { + "dependency": "transitive", + "description": { + "name": "url_launcher_web", + "sha256": "d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.2" + }, + "url_launcher_windows": { + "dependency": "transitive", + "description": { + "name": "url_launcher_windows", + "sha256": "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.5" + }, + "uuid": { + "dependency": "direct main", + "description": { + "name": "uuid", + "sha256": "a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.5.2" + }, + "vector_math": { + "dependency": "transitive", + "description": { + "name": "vector_math", + "sha256": "d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "video_compress": { + "dependency": "direct main", + "description": { + "name": "video_compress", + "sha256": "31bc5cdb9a02ba666456e5e1907393c28e6e0e972980d7d8d619a7beda0d4f20", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.4" + }, + "video_player": { + "dependency": "direct main", + "description": { + "name": "video_player", + "sha256": "096bc28ce10d131be80dfb00c223024eb0fba301315a406728ab43dd99c45bdf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.10.1" + }, + "video_player_android": { + "dependency": "transitive", + "description": { + "name": "video_player_android", + "sha256": "ee4fd520b0cafa02e4a867a0f882092e727cdaa1a2d24762171e787f8a502b0a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.9.1" + }, + "video_player_avfoundation": { + "dependency": "transitive", + "description": { + "name": "video_player_avfoundation", + "sha256": "2a7aaf2f28212c285e0fb29b50728bbea513d743dd48d3024098015f169fb937", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.8.10" + }, + "video_player_platform_interface": { + "dependency": "transitive", + "description": { + "name": "video_player_platform_interface", + "sha256": "57c5d73173f76d801129d0531c2774052c5a7c11ccb962f1830630decd9f24ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.6.0" + }, + "video_player_web": { + "dependency": "transitive", + "description": { + "name": "video_player_web", + "sha256": "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.4.0" + }, + "vm_service": { + "dependency": "transitive", + "description": { + "name": "vm_service", + "sha256": "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "15.0.2" + }, + "vodozemac": { + "dependency": "transitive", + "description": { + "name": "vodozemac", + "sha256": "bbe7dd31d7f623e2aeedb92e4b71a8b519e6109ce1e2911b5a220f6752b65cda", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.0" + }, + "wakelock_plus": { + "dependency": "direct main", + "description": { + "name": "wakelock_plus", + "sha256": "9296d40c9adbedaba95d1e704f4e0b434be446e2792948d0e4aa977048104228", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "wakelock_plus_platform_interface": { + "dependency": "transitive", + "description": { + "name": "wakelock_plus_platform_interface", + "sha256": "036deb14cd62f558ca3b73006d52ce049fabcdcb2eddfe0bf0fe4e8a943b5cf2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "watcher": { + "dependency": "transitive", + "description": { + "name": "watcher", + "sha256": "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "web": { + "dependency": "transitive", + "description": { + "name": "web", + "sha256": "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "web_socket": { + "dependency": "transitive", + "description": { + "name": "web_socket", + "sha256": "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "web_socket_channel": { + "dependency": "transitive", + "description": { + "name": "web_socket_channel", + "sha256": "d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "webcrypto": { + "dependency": "transitive", + "description": { + "name": "webcrypto", + "sha256": "6b43001c4110856ff7fa5e5e65e7b2d44bec1d8b54a4d84d5fa2c7622267c5c1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.0" + }, + "webdriver": { + "dependency": "transitive", + "description": { + "name": "webdriver", + "sha256": "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.0" + }, + "webkit_inspection_protocol": { + "dependency": "transitive", + "description": { + "name": "webkit_inspection_protocol", + "sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "webpush_encryption": { + "dependency": "transitive", + "description": { + "name": "webpush_encryption", + "sha256": "5b83272b91acda6ae515fcd980c94f06bf413702282497c5a68f5dfc64fed27f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "webrtc_interface": { + "dependency": "transitive", + "description": { + "name": "webrtc_interface", + "sha256": "ad0e5786b2acd3be72a3219ef1dde9e1cac071cf4604c685f11b61d63cdd6eb3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "win32": { + "dependency": "transitive", + "description": { + "name": "win32", + "sha256": "d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.15.0" + }, + "win32_registry": { + "dependency": "transitive", + "description": { + "name": "win32_registry", + "sha256": "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "window_manager": { + "dependency": "transitive", + "description": { + "name": "window_manager", + "sha256": "7eb6d6c4164ec08e1bf978d6e733f3cebe792e2a23fb07cbca25c2872bfdbdcd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.5.1" + }, + "window_to_front": { + "dependency": "transitive", + "description": { + "name": "window_to_front", + "sha256": "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.3" + }, + "wkt_parser": { + "dependency": "transitive", + "description": { + "name": "wkt_parser", + "sha256": "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "xdg_directories": { + "dependency": "transitive", + "description": { + "name": "xdg_directories", + "sha256": "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.0" + }, + "xml": { + "dependency": "transitive", + "description": { + "name": "xml", + "sha256": "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.6.1" + }, + "yaml": { + "dependency": "transitive", + "description": { + "name": "yaml", + "sha256": "b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.3" + } + }, + "sdks": { + "dart": ">=3.10.0 <4.0.0", + "flutter": ">=3.38.0" + } +} diff --git a/nix/shell.nix b/nix/shell.nix new file mode 100644 index 0000000000..be4057d0ff --- /dev/null +++ b/nix/shell.nix @@ -0,0 +1,17 @@ +flake: {pkgs, ...}: let + # Hostplatform system + system = pkgs.hostPlatform.system; + + # Production package + # base = flake.packages.${system}.default; +in + pkgs.mkShell { + # inputsFrom = [base]; + + packages = with pkgs; [ + nixd + statix + deadnix + alejandra + ]; + } diff --git a/nix/vodozemac-wasm.nix b/nix/vodozemac-wasm.nix new file mode 100644 index 0000000000..9ae780b787 --- /dev/null +++ b/nix/vodozemac-wasm.nix @@ -0,0 +1,131 @@ +{ + lib, + stdenv, + fluffychat-web, + symlinkJoin, + buildPackages, + rustc, + rustPlatform, + cargo, + flutter, + flutter_rust_bridge_codegen, + which, + wasm-pack, + wasm-bindgen-cli_0_2_100, + binaryen, + writableTmpDirAsHomeHook, + runCommand, + removeReferencesTo, + olm +}: + +let + pubSources = fluffychat-web.pubspecLock.dependencySources; + pubCache = runCommand "uchar-pub-cache" { } '' + mkdir -p $out/hosted/pub.dev + pushd $out/hosted/pub.dev + ${lib.concatMapAttrsStringSep "; " ( + _: p: + "ln -s ${p} ./${if lib.hasPrefix "pub-" p.name then lib.removePrefix "pub-" p.name else p.name}" + ) pubSources} + popd + ''; + + # wasm-pack doesn't take 'RUST_SRC_PATH' into consideration + sysroot = symlinkJoin { + name = "rustc_unwrapped_with_libsrc"; + paths = [ + buildPackages.rustc.unwrapped + ]; + postBuild = '' + mkdir -p $out/lib/rustlib/src/rust + ln -s ${rustPlatform.rustLibSrc} $out/lib/rustlib/src/rust/library + ''; + }; + rustcWithLibSrc = buildPackages.rustc.override { inherit sysroot; }; +in + +stdenv.mkDerivation { + pname = "vodozemac-wasm"; + inherit (pubSources.vodozemac) version; + + # These two were in the same repository, so just reuse them + unpackPhase = '' + runHook preUnpack + + cp -r ${pubSources.flutter_vodozemac}/rust ./rust + cp -r ${pubSources.vodozemac} ./dart + chmod -R +rwx . + + runHook postUnpack + ''; + + # Remove dev_dependencies to avoid downloading them + # postPatch = '' + # sed -i '/^dev_dependencies:/,/^$/d' dart/pubspec.yaml + # ''; + + cargoRoot = "rust"; + + cargoDeps = symlinkJoin { + name = "vodozemac-wasm-cargodeps"; + paths = [ + pubSources.flutter_vodozemac.passthru.cargoDeps + # Pull in rust vendor so we don't have to vendor rustLibSrc again + # This is required because `-Z build-std=std,panic_abort` rebuilds std + rustPlatform.rustVendorSrc + ]; + }; + + nativeBuildInputs = [ + rustPlatform.cargoSetupHook + rustcWithLibSrc + rustc.llvmPackages.lld + cargo + flutter + flutter_rust_bridge_codegen + which + wasm-pack + wasm-bindgen-cli_0_2_100 + binaryen + writableTmpDirAsHomeHook + removeReferencesTo + ]; + + buildPhase = '' + runHook preBuild + + export PUB_CACHE=$TMPDIR/pub-cache + mkdir -p $PUB_CACHE/hosted + ln -s ${pubCache}/hosted/pub.dev $PUB_CACHE/hosted/pub.dev + + pushd dart + dart pub get --offline + popd + RUST_LOG=info flutter_rust_bridge_codegen build-web \ + --dart-root $(realpath ./dart) --rust-root $(realpath ./rust) --release + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -r dart/web/pkg/vodozemac_bindings_dart* $out/ + + runHook postInstall + ''; + + # fix rustc leaking into closure + # fluffychat-web should not reference build-time dependencies + preFixup = '' + find $out -name "*.wasm" -exec remove-references-to -t ${sysroot} {} + + ''; + + env = { + RUSTC_BOOTSTRAP = 1; # `-Z build-std=std,panic_abort` requires nightly toolchain + }; + + inherit (fluffychat-web) meta; +}