commit 28b85061b91351c610d3645ca114df9f093e29c5 Author: Alma Alexyz Date: Mon Aug 31 12:35:13 2026 +0500 feat: initial release of Oracle 999 divination app diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bca3a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ +/coverage/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release +*.apk diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..cf4b47a --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "c9a6c484230f8b5e408ec57be1ef71dee1e77020" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: android + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: ios + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: linux + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: macos + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: web + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + - platform: windows + create_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + base_revision: c9a6c484230f8b5e408ec57be1ef71dee1e77020 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/README.md b/README.md new file mode 100644 index 0000000..2268b0a --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +# words999 + +A new Flutter project. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Learn Flutter](https://docs.flutter.dev/get-started/learn-flutter) +- [Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Flutter learning resources](https://docs.flutter.dev/reference/learning-resources) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..be3943c --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 0000000..c1ecfb2 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,45 @@ +plugins { + id("com.android.application") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.example.words999.words999" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.words999.words999" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..b1784e2 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/words999/words999/MainActivity.kt b/android/app/src/main/kotlin/com/example/words999/words999/MainActivity.kt new file mode 100644 index 0000000..e507726 --- /dev/null +++ b/android/app/src/main/kotlin/com/example/words999/words999/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.words999.words999 + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..db77bb4 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..17987b7 Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..09d4391 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..d5f1c8d Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..4d6372e Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 0000000..dbee657 --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..e96108c --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,6 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +# This newDsl flag was added by the Flutter template +android.newDsl=false +# This builtInKotlin flag was added by the Flutter template +android.builtInKotlin=false diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2d428bf --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 0000000..c21f0c5 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "9.0.1" apply false + id("org.jetbrains.kotlin.android") version "2.3.20" apply false +} + +include(":app") diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..391a902 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..592ceee --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2a98a50 --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,644 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c3fedb2 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..c30b367 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,16 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { + GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000..dc9ada4 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 0000000..7353c41 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000..797d452 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000..6ed2d93 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000..4cd7b00 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000..fe73094 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000..321773c Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000..797d452 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000..502f463 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000..0ec3034 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000..0ec3034 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000..e9f5fea Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000..84ac32a Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000..8953cba Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000..0467bf1 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..0bedcf2 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000..9da19ea Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..d56263b --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,70 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Words999 + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + words999 + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneConfigurationName + flutter + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/Runner/SceneDelegate.swift b/ios/Runner/SceneDelegate.swift new file mode 100644 index 0000000..b9ce8ea --- /dev/null +++ b/ios/Runner/SceneDelegate.swift @@ -0,0 +1,6 @@ +import Flutter +import UIKit + +class SceneDelegate: FlutterSceneDelegate { + +} diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..86a7c3b --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/data/words_data.dart b/lib/data/words_data.dart new file mode 100644 index 0000000..7ace2f5 --- /dev/null +++ b/lib/data/words_data.dart @@ -0,0 +1,8006 @@ +// AUTO-GENERATED: 1000 Oracle & Divination Russian Words Dataset (000 to 999) +// Sacred Lexicon with Archetypal and Symbolic Interpretations +import '../models/word_model.dart'; + +const List kRussianTop1000Words = [ + WordItem( + id: 0, + word: "и", + partOfSpeech: "союз", + frequency: 35801.8, + category: "Узел / Отношение", + description: "Гармоничный синтез, объединение полярностей, непрерывность связи.", + ), + WordItem( + id: 1, + word: "в", + partOfSpeech: "предлог", + frequency: 31374.2, + category: "Связь / Направление", + description: "Вектор глубокого погружения внутрь, тайное пространство, переход в скрытую суть.", + ), + WordItem( + id: 2, + word: "не", + partOfSpeech: "частица", + frequency: 18028.0, + category: "Импульс / Оттенок", + description: "Отрицание, необходимость отсечь иллюзию или обратить взор на противоположное.", + ), + WordItem( + id: 3, + word: "на", + partOfSpeech: "предлог", + frequency: 15867.3, + category: "Связь / Направление", + description: "Манифестация на поверхности, опора, явное проявление перед миром.", + ), + WordItem( + id: 4, + word: "я", + partOfSpeech: "местоимение", + frequency: 12684.4, + category: "Фокус сознания", + description: "Центр осознания, точка сборки реальности, личная воля и ответственность.", + ), + WordItem( + id: 5, + word: "быть", + partOfSpeech: "глагол", + frequency: 12160.7, + category: "Действие / Трансформация", + description: "Первичное присутствие, манифестация существования, утверждение «Я ЕСМЬ».", + ), + WordItem( + id: 6, + word: "он", + partOfSpeech: "местоимение", + frequency: 11791.1, + category: "Фокус сознания", + description: "Внешний фактор, мужской аспект ситуации, сторонний наблюдатель.", + ), + WordItem( + id: 7, + word: "с", + partOfSpeech: "предлог", + frequency: 11311.9, + category: "Связь / Направление", + description: "Союз, сотворчество, совместное преодоление и синергия энергий.", + ), + WordItem( + id: 8, + word: "что", + partOfSpeech: "союз", + frequency: 8354.0, + category: "Узел / Отношение", + description: "Узел отношений («что»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 9, + word: "а", + partOfSpeech: "союз", + frequency: 8198.0, + category: "Узел / Отношение", + description: "Тонкое различение, контрапункт, осознание различий без вражды.", + ), + WordItem( + id: 10, + word: "по", + partOfSpeech: "предлог", + frequency: 5786.7, + category: "Связь / Направление", + description: "Вектор связи («по»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 11, + word: "это", + partOfSpeech: "местоимение", + frequency: 5707.8, + category: "Фокус сознания", + description: "Фокус осознания («это»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 12, + word: "она", + partOfSpeech: "местоимение", + frequency: 5592.4, + category: "Фокус сознания", + description: "Интуитивный аспект ситуации, женская таинственная энергия, вдохновение.", + ), + WordItem( + id: 13, + word: "этот", + partOfSpeech: "местоименное прил.", + frequency: 5414.0, + category: "Определение", + description: "Фокус осознания («этот»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 14, + word: "к", + partOfSpeech: "предлог", + frequency: 5389.0, + category: "Связь / Направление", + description: "Устремление к цели, притяжение, сближение и поиск соприкосновения.", + ), + WordItem( + id: 15, + word: "но", + partOfSpeech: "союз", + frequency: 5381.4, + category: "Узел / Отношение", + description: "Препятствие для проверки воли, скрытое условие, развилка судьбы.", + ), + WordItem( + id: 16, + word: "они", + partOfSpeech: "местоимение", + frequency: 4850.0, + category: "Фокус сознания", + description: "Окружение, коллективное поле, внешний социум и родовые связи.", + ), + WordItem( + id: 17, + word: "мы", + partOfSpeech: "местоимение", + frequency: 4704.8, + category: "Фокус сознания", + description: "Единство душ, соборность, синергия сил и разделенная судьба.", + ), + WordItem( + id: 18, + word: "как", + partOfSpeech: "союз", + frequency: 4403.7, + category: "Узел / Отношение", + description: "Узел отношений («как»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 19, + word: "из", + partOfSpeech: "предлог", + frequency: 4314.1, + category: "Связь / Направление", + description: "Вектор исхода, освобождение, исток реки, рождение из первопричины.", + ), + WordItem( + id: 20, + word: "у", + partOfSpeech: "предлог", + frequency: 4306.1, + category: "Связь / Направление", + description: "Вектор связи («у»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 21, + word: "который", + partOfSpeech: "местоименное прил.", + frequency: 4209.0, + category: "Определение", + description: "Фокус осознания («который»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 22, + word: "то", + partOfSpeech: "местоимение", + frequency: 3964.4, + category: "Фокус сознания", + description: "Фокус осознания («то»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 23, + word: "за", + partOfSpeech: "предлог", + frequency: 3904.1, + category: "Связь / Направление", + description: "Поддержка из-за спины, скрытая причина или то, что ждет за горизонтом.", + ), + WordItem( + id: 24, + word: "свой", + partOfSpeech: "местоименное прил.", + frequency: 3825.5, + category: "Определение", + description: "Фокус осознания («свой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 25, + word: "весь", + partOfSpeech: "местоименное прил.", + frequency: 3786.3, + category: "Определение", + description: "Фокус осознания («весь»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 26, + word: "год", + partOfSpeech: "существительное", + frequency: 3727.5, + category: "Образ / Архетип", + description: "Сакральный символ («год»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 27, + word: "от", + partOfSpeech: "предлог", + frequency: 3672.5, + category: "Связь / Направление", + description: "Дистанцирование, защита границ, завершение контакта или отправная точка.", + ), + WordItem( + id: 28, + word: "так", + partOfSpeech: "наречие-местоимение", + frequency: 3440.4, + category: "Направление", + description: "Модус судьбы («так»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 29, + word: "о", + partOfSpeech: "предлог", + frequency: 3407.1, + category: "Связь / Направление", + description: "Вектор связи («о»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 30, + word: "для", + partOfSpeech: "предлог", + frequency: 3229.3, + category: "Связь / Направление", + description: "Вектор связи («для»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 31, + word: "ты", + partOfSpeech: "местоимение", + frequency: 3171.2, + category: "Фокус сознания", + description: "Зеркало, партнер, божественное «Ты», встреча с другим мирозданием.", + ), + WordItem( + id: 32, + word: "же", + partOfSpeech: "частица", + frequency: 3144.3, + category: "Импульс / Оттенок", + description: "Импульс модальности («же»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 33, + word: "все", + partOfSpeech: "местоимение", + frequency: 3106.8, + category: "Фокус сознания", + description: "Полнота охвата, целостность, космический синтез всех элементов.", + ), + WordItem( + id: 34, + word: "тот", + partOfSpeech: "местоименное прил.", + frequency: 2967.1, + category: "Определение", + description: "Фокус осознания («тот»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 35, + word: "мочь", + partOfSpeech: "глагол", + frequency: 2912.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («мочь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 36, + word: "вы", + partOfSpeech: "местоимение", + frequency: 2906.4, + category: "Фокус сознания", + description: "Фокус осознания («вы»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 37, + word: "человек", + partOfSpeech: "существительное", + frequency: 2723.0, + category: "Образ / Архетип", + description: "Сакральный символ («человек»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 38, + word: "такой", + partOfSpeech: "местоименное прил.", + frequency: 2696.8, + category: "Определение", + description: "Фокус осознания («такой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 39, + word: "его", + partOfSpeech: "местоименное прил.", + frequency: 2577.9, + category: "Определение", + description: "Фокус осознания («его»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 40, + word: "сказать", + partOfSpeech: "глагол", + frequency: 2396.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («сказать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 41, + word: "только", + partOfSpeech: "частица", + frequency: 2391.7, + category: "Импульс / Оттенок", + description: "Импульс модальности («только»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 42, + word: "или", + partOfSpeech: "союз", + frequency: 2345.0, + category: "Узел / Отношение", + description: "Священный выбор, развилка дорог, тест на зрелость и самостоятельность.", + ), + WordItem( + id: 43, + word: "еще", + partOfSpeech: "наречие", + frequency: 2323.9, + category: "Вектор / Обстоятельство", + description: "Время для подготовки, шанс доделать начатое, незавершенный цикл.", + ), + WordItem( + id: 44, + word: "бы", + partOfSpeech: "частица", + frequency: 2322.4, + category: "Импульс / Оттенок", + description: "Импульс модальности («бы»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 45, + word: "себя", + partOfSpeech: "местоимение", + frequency: 2272.8, + category: "Фокус сознания", + description: "Фокус осознания («себя»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 46, + word: "один", + partOfSpeech: "местоименное прил.", + frequency: 2245.7, + category: "Определение", + description: "Фокус осознания («один»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 47, + word: "уже", + partOfSpeech: "наречие", + frequency: 2179.2, + category: "Вектор / Обстоятельство", + description: "Свершившийся факт, необратимость времени, плод уже созрел.", + ), + WordItem( + id: 48, + word: "до", + partOfSpeech: "предлог", + frequency: 2061.1, + category: "Связь / Направление", + description: "Предел, граница терпения, священный рубеж перед трансформацией.", + ), + WordItem( + id: 49, + word: "время", + partOfSpeech: "существительное", + frequency: 2015.7, + category: "Образ / Архетип", + description: "Великий уравнитель, поток изменений, вызревание плодов и проверка намерений на прочность.", + ), + WordItem( + id: 50, + word: "если", + partOfSpeech: "союз", + frequency: 1998.1, + category: "Узел / Отношение", + description: "Узел отношений («если»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 51, + word: "сам", + partOfSpeech: "местоименное прил.", + frequency: 1986.3, + category: "Определение", + description: "Фокус осознания («сам»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 52, + word: "когда", + partOfSpeech: "союз", + frequency: 1895.7, + category: "Узел / Отношение", + description: "Узел отношений («когда»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 53, + word: "другой", + partOfSpeech: "местоименное прил.", + frequency: 1837.3, + category: "Определение", + description: "Фокус осознания («другой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 54, + word: "вот", + partOfSpeech: "частица", + frequency: 1785.1, + category: "Импульс / Оттенок", + description: "Импульс модальности («вот»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 55, + word: "говорить", + partOfSpeech: "глагол", + frequency: 1755.0, + category: "Действие / Трансформация", + description: "Манифестация намерения, передача вибрации, ответственность за произнесенное.", + ), + WordItem( + id: 56, + word: "наш", + partOfSpeech: "местоименное прил.", + frequency: 1731.8, + category: "Определение", + description: "Фокус осознания («наш»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 57, + word: "мой", + partOfSpeech: "местоименное прил.", + frequency: 1720.3, + category: "Определение", + description: "Фокус осознания («мой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 58, + word: "знать", + partOfSpeech: "глагол", + frequency: 1713.8, + category: "Действие / Трансформация", + description: "Внутреннее ведение, соприкосновение с истиной, выход из иллюзий неведения.", + ), + WordItem( + id: 59, + word: "стать", + partOfSpeech: "глагол", + frequency: 1621.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («стать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 60, + word: "при", + partOfSpeech: "предлог", + frequency: 1550.8, + category: "Связь / Направление", + description: "Вектор связи («при»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 61, + word: "чтобы", + partOfSpeech: "союз", + frequency: 1479.7, + category: "Узел / Отношение", + description: "Узел отношений («чтобы»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 62, + word: "дело", + partOfSpeech: "существительное", + frequency: 1412.1, + category: "Образ / Архетип", + description: "Сакральный символ («дело»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 63, + word: "жизнь", + partOfSpeech: "существительное", + frequency: 1389.8, + category: "Образ / Архетип", + description: "Вечный ток бытия, непрерывное развитие, витальная энергия и способность к исцелению.", + ), + WordItem( + id: 64, + word: "кто", + partOfSpeech: "местоимение", + frequency: 1374.8, + category: "Фокус сознания", + description: "Фокус осознания («кто»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 65, + word: "первый", + partOfSpeech: "anum", + frequency: 1345.6, + category: "Сакральный символ", + description: "Символический ключ («первый»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 66, + word: "очень", + partOfSpeech: "наречие", + frequency: 1286.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («очень»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 67, + word: "два", + partOfSpeech: "числительное", + frequency: 1285.1, + category: "Числовой код", + description: "Числовой код («два»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 68, + word: "день", + partOfSpeech: "существительное", + frequency: 1258.4, + category: "Образ / Архетип", + description: "Сакральный символ («день»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 69, + word: "ее", + partOfSpeech: "местоименное прил.", + frequency: 1219.2, + category: "Определение", + description: "Фокус осознания («ее»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 70, + word: "новый", + partOfSpeech: "прилагательное", + frequency: 1217.5, + category: "Свойство / Качество", + description: "Качество энергии («новый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 71, + word: "рука", + partOfSpeech: "существительное", + frequency: 1200.6, + category: "Образ / Архетип", + description: "Творческое действие, помощь, способность брать и отдавать, жест созидания.", + ), + WordItem( + id: 72, + word: "даже", + partOfSpeech: "частица", + frequency: 1179.8, + category: "Импульс / Оттенок", + description: "Импульс модальности («даже»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 73, + word: "во", + partOfSpeech: "предлог", + frequency: 1167.8, + category: "Связь / Направление", + description: "Вектор связи («во»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 74, + word: "со", + partOfSpeech: "предлог", + frequency: 1151.3, + category: "Связь / Направление", + description: "Вектор связи («со»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 75, + word: "раз", + partOfSpeech: "существительное", + frequency: 1131.8, + category: "Образ / Архетип", + description: "Сакральный символ («раз»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 76, + word: "где", + partOfSpeech: "наречие-местоимение", + frequency: 1129.2, + category: "Направление", + description: "Модус судьбы («где»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 77, + word: "там", + partOfSpeech: "наречие-местоимение", + frequency: 1128.1, + category: "Направление", + description: "Горизонт устремлений, проекция надежд или иллюзия будущего.", + ), + WordItem( + id: 78, + word: "под", + partOfSpeech: "предлог", + frequency: 1126.0, + category: "Связь / Направление", + description: "Скрытое влияние, тайные мотивы, невидимая опора или бремя ответственности.", + ), + WordItem( + id: 79, + word: "можно", + partOfSpeech: "наречие", + frequency: 1125.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («можно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 80, + word: "ну", + partOfSpeech: "частица", + frequency: 1114.6, + category: "Импульс / Оттенок", + description: "Импульс модальности («ну»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 81, + word: "какой", + partOfSpeech: "местоименное прил.", + frequency: 1091.7, + category: "Определение", + description: "Фокус осознания («какой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 82, + word: "после", + partOfSpeech: "предлог", + frequency: 1080.1, + category: "Связь / Направление", + description: "Последствия выбора, сбор плодов, новое состояние после грозы.", + ), + WordItem( + id: 83, + word: "их", + partOfSpeech: "местоименное прил.", + frequency: 1076.0, + category: "Определение", + description: "Фокус осознания («их»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 84, + word: "работа", + partOfSpeech: "существительное", + frequency: 1058.3, + category: "Образ / Архетип", + description: "Сакральный символ («работа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 85, + word: "без", + partOfSpeech: "предлог", + frequency: 1018.8, + category: "Связь / Направление", + description: "Отказ от лишнего, аскеза, обнаженная суть без украшений.", + ), + WordItem( + id: 86, + word: "самый", + partOfSpeech: "местоименное прил.", + frequency: 1007.4, + category: "Определение", + description: "Фокус осознания («самый»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 87, + word: "потом", + partOfSpeech: "наречие-местоимение", + frequency: 1006.1, + category: "Направление", + description: "Модус судьбы («потом»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 88, + word: "надо", + partOfSpeech: "наречие", + frequency: 993.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («надо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 89, + word: "хотеть", + partOfSpeech: "глагол", + frequency: 991.3, + category: "Действие / Трансформация", + description: "Импульс желания, топливо для движения, но и проверка на истинность потребности.", + ), + WordItem( + id: 90, + word: "ли", + partOfSpeech: "частица", + frequency: 981.7, + category: "Импульс / Оттенок", + description: "Импульс модальности («ли»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 91, + word: "слово", + partOfSpeech: "существительное", + frequency: 967.9, + category: "Образ / Архетип", + description: "Творящий логос, материализация мысли, сила обещания и заклинание реальности.", + ), + WordItem( + id: 92, + word: "идти", + partOfSpeech: "глагол", + frequency: 957.1, + category: "Действие / Трансформация", + description: "Непрерывное следование своему пути, преодоление инерции и сомнений.", + ), + WordItem( + id: 93, + word: "россия", + partOfSpeech: "s.PROP", + frequency: 952.2, + category: "Сакральный символ", + description: "Символический ключ («россия»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 94, + word: "большой", + partOfSpeech: "прилагательное", + frequency: 944.4, + category: "Свойство / Качество", + description: "Качество энергии («большой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 95, + word: "должен", + partOfSpeech: "прилагательное", + frequency: 944.2, + category: "Свойство / Качество", + description: "Качество энергии («должен»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 96, + word: "место", + partOfSpeech: "существительное", + frequency: 926.6, + category: "Образ / Архетип", + description: "Сакральный символ («место»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 97, + word: "иметь", + partOfSpeech: "глагол", + frequency: 906.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («иметь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 98, + word: "ничто", + partOfSpeech: "местоимение", + frequency: 902.8, + category: "Фокус сознания", + description: "Первозданная пустота (Шуньята), потенциал непроявленного бытия.", + ), + WordItem( + id: 99, + word: "сейчас", + partOfSpeech: "наречие-местоимение", + frequency: 897.3, + category: "Направление", + description: "Вечное настоящее, врата в безмолвие, момент принятия решения.", + ), + WordItem( + id: 100, + word: "тут", + partOfSpeech: "наречие-местоимение", + frequency: 879.2, + category: "Направление", + description: "Модус судьбы («тут»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 101, + word: "лицо", + partOfSpeech: "существительное", + frequency: 878.0, + category: "Образ / Архетип", + description: "Сакральный символ («лицо»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 102, + word: "каждый", + partOfSpeech: "местоименное прил.", + frequency: 875.9, + category: "Определение", + description: "Фокус осознания («каждый»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 103, + word: "друг", + partOfSpeech: "существительное", + frequency: 874.2, + category: "Образ / Архетип", + description: "Родственная душа, зеркало верности, соратник в духовных поисках.", + ), + WordItem( + id: 104, + word: "нет", + partOfSpeech: "наречие", + frequency: 874.0, + category: "Вектор / Обстоятельство", + description: "Сакральный запрет, защита от ложного пути, необходимость остановиться.", + ), + WordItem( + id: 105, + word: "теперь", + partOfSpeech: "наречие-местоимение", + frequency: 871.8, + category: "Направление", + description: "Модус судьбы («теперь»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 106, + word: "ни", + partOfSpeech: "частица", + frequency: 858.2, + category: "Импульс / Оттенок", + description: "Импульс модальности («ни»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 107, + word: "глаз", + partOfSpeech: "существительное", + frequency: 857.6, + category: "Образ / Архетип", + description: "Видение сути, наблюдатель, прозрение и всевидящее око высшего разума.", + ), + WordItem( + id: 108, + word: "тоже", + partOfSpeech: "наречие", + frequency: 841.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («тоже»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 109, + word: "тогда", + partOfSpeech: "наречие-местоимение", + frequency: 835.6, + category: "Направление", + description: "Модус судьбы («тогда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 110, + word: "видеть", + partOfSpeech: "глагол", + frequency: 818.2, + category: "Действие / Трансформация", + description: "Ясновидение, способность различать скрытую суть явлений за внешней оболочкой.", + ), + WordItem( + id: 111, + word: "вопрос", + partOfSpeech: "существительное", + frequency: 805.8, + category: "Образ / Архетип", + description: "Сакральный символ («вопрос»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 112, + word: "через", + partOfSpeech: "предлог", + frequency: 805.4, + category: "Связь / Направление", + description: "Вектор связи («через»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 113, + word: "да", + partOfSpeech: "союз", + frequency: 801.0, + category: "Узел / Отношение", + description: "Благословение вселенной, согласие с потоком, зеленый свет действию.", + ), + WordItem( + id: 114, + word: "здесь", + partOfSpeech: "наречие-местоимение", + frequency: 796.8, + category: "Направление", + description: "Точка абсолютного присутствия, единственный момент, где есть сила.", + ), + WordItem( + id: 115, + word: "дом", + partOfSpeech: "существительное", + frequency: 792.6, + category: "Образ / Архетип", + description: "Центр вселенной человека, корень рода, безопасность и внутренний мир.", + ), + WordItem( + id: 116, + word: "потому", + partOfSpeech: "наречие-местоимение", + frequency: 769.3, + category: "Направление", + description: "Модус судьбы («потому»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 117, + word: "сторона", + partOfSpeech: "существительное", + frequency: 768.3, + category: "Образ / Архетип", + description: "Сакральный символ («сторона»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 118, + word: "какой-то", + partOfSpeech: "местоименное прил.", + frequency: 762.6, + category: "Определение", + description: "Фокус осознания («какой-то»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 119, + word: "думать", + partOfSpeech: "глагол", + frequency: 755.5, + category: "Действие / Трансформация", + description: "Ментальная алхимия, структурирование хаоса, поиск верных решений.", + ), + WordItem( + id: 120, + word: "сделать", + partOfSpeech: "глагол", + frequency: 743.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («сделать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 121, + word: "страна", + partOfSpeech: "существительное", + frequency: 725.7, + category: "Образ / Архетип", + description: "Сакральный символ («страна»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 122, + word: "жить", + partOfSpeech: "глагол", + frequency: 725.5, + category: "Действие / Трансформация", + description: "Полнота проживания каждого мига, принятие всех граней земного опыта.", + ), + WordItem( + id: 123, + word: "чем", + partOfSpeech: "союз", + frequency: 721.1, + category: "Узел / Отношение", + description: "Узел отношений («чем»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 124, + word: "мир", + partOfSpeech: "существительное", + frequency: 714.7, + category: "Образ / Архетип", + description: "Сакральный символ («мир»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 125, + word: "об", + partOfSpeech: "предлог", + frequency: 714.5, + category: "Связь / Направление", + description: "Вектор связи («об»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 126, + word: "последний", + partOfSpeech: "прилагательное", + frequency: 712.6, + category: "Свойство / Качество", + description: "Качество энергии («последний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 127, + word: "случай", + partOfSpeech: "существительное", + frequency: 709.7, + category: "Образ / Архетип", + description: "Сакральный символ («случай»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 128, + word: "голова", + partOfSpeech: "существительное", + frequency: 709.4, + category: "Образ / Архетип", + description: "Сакральный символ («голова»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 129, + word: "более", + partOfSpeech: "наречие", + frequency: 706.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («более»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 130, + word: "делать", + partOfSpeech: "глагол", + frequency: 701.1, + category: "Действие / Трансформация", + description: "Заземление замысла, физическое воплощение идей в плотный мир.", + ), + WordItem( + id: 131, + word: "что-то", + partOfSpeech: "местоимение", + frequency: 667.6, + category: "Фокус сознания", + description: "Фокус осознания («что-то»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 132, + word: "смотреть", + partOfSpeech: "глагол", + frequency: 667.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («смотреть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 133, + word: "ребенок", + partOfSpeech: "существительное", + frequency: 658.3, + category: "Образ / Архетип", + description: "Первозданная чистота, спонтанность, начало нового цикла, искренняя вера в чудо.", + ), + WordItem( + id: 134, + word: "просто", + partOfSpeech: "частица", + frequency: 656.5, + category: "Импульс / Оттенок", + description: "Импульс модальности («просто»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 135, + word: "конечно", + partOfSpeech: "наречие", + frequency: 647.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («конечно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 136, + word: "сила", + partOfSpeech: "существительное", + frequency: 645.8, + category: "Образ / Архетип", + description: "Сакральный символ («сила»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 137, + word: "российский", + partOfSpeech: "прилагательное", + frequency: 644.6, + category: "Свойство / Качество", + description: "Качество энергии («российский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 138, + word: "конец", + partOfSpeech: "существительное", + frequency: 634.7, + category: "Образ / Архетип", + description: "Сакральный символ («конец»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 139, + word: "москва", + partOfSpeech: "s.PROP", + frequency: 633.5, + category: "Сакральный символ", + description: "Символический ключ («москва»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 140, + word: "перед", + partOfSpeech: "предлог", + frequency: 626.7, + category: "Связь / Направление", + description: "Вектор связи («перед»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 141, + word: "несколько", + partOfSpeech: "числительное", + frequency: 623.7, + category: "Числовой код", + description: "Числовой код («несколько»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 142, + word: "вид", + partOfSpeech: "существительное", + frequency: 620.1, + category: "Образ / Архетип", + description: "Сакральный символ («вид»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 143, + word: "система", + partOfSpeech: "существительное", + frequency: 617.8, + category: "Образ / Архетип", + description: "Сакральный символ («система»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 144, + word: "всегда", + partOfSpeech: "наречие-местоимение", + frequency: 611.9, + category: "Направление", + description: "Вечность, непреложная константа духа, космический закон.", + ), + WordItem( + id: 145, + word: "работать", + partOfSpeech: "глагол", + frequency: 611.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («работать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 146, + word: "между", + partOfSpeech: "предлог", + frequency: 607.5, + category: "Связь / Направление", + description: "Вектор связи («между»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 147, + word: "три", + partOfSpeech: "числительное", + frequency: 596.7, + category: "Числовой код", + description: "Числовой код («три»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 148, + word: "понять", + partOfSpeech: "глагол", + frequency: 588.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («понять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 149, + word: "пойти", + partOfSpeech: "глагол", + frequency: 587.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («пойти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 150, + word: "часть", + partOfSpeech: "существительное", + frequency: 585.4, + category: "Образ / Архетип", + description: "Сакральный символ («часть»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 151, + word: "спросить", + partOfSpeech: "глагол", + frequency: 573.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («спросить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 152, + word: "город", + partOfSpeech: "существительное", + frequency: 573.4, + category: "Образ / Архетип", + description: "Сакральный символ («город»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 153, + word: "дать", + partOfSpeech: "глагол", + frequency: 573.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («дать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 154, + word: "также", + partOfSpeech: "наречие", + frequency: 569.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («также»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 155, + word: "никто", + partOfSpeech: "местоимение", + frequency: 562.2, + category: "Фокус сознания", + description: "Фокус осознания («никто»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 156, + word: "понимать", + partOfSpeech: "глагол", + frequency: 559.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («понимать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 157, + word: "получить", + partOfSpeech: "глагол", + frequency: 557.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («получить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 158, + word: "отношение", + partOfSpeech: "существительное", + frequency: 557.4, + category: "Образ / Архетип", + description: "Сакральный символ («отношение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 159, + word: "лишь", + partOfSpeech: "частица", + frequency: 552.5, + category: "Импульс / Оттенок", + description: "Импульс модальности («лишь»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 160, + word: "второй", + partOfSpeech: "anum", + frequency: 552.4, + category: "Сакральный символ", + description: "Символический ключ («второй»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 161, + word: "именно", + partOfSpeech: "частица", + frequency: 551.4, + category: "Импульс / Оттенок", + description: "Импульс модальности («именно»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 162, + word: "ваш", + partOfSpeech: "местоименное прил.", + frequency: 547.5, + category: "Определение", + description: "Фокус осознания («ваш»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 163, + word: "хотя", + partOfSpeech: "союз", + frequency: 546.9, + category: "Узел / Отношение", + description: "Узел отношений («хотя»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 164, + word: "сидеть", + partOfSpeech: "глагол", + frequency: 538.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («сидеть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 165, + word: "над", + partOfSpeech: "предлог", + frequency: 537.0, + category: "Связь / Направление", + description: "Высший надзор, выход в мета-позицию, доминирование духа над материей.", + ), + WordItem( + id: 166, + word: "женщина", + partOfSpeech: "существительное", + frequency: 533.3, + category: "Образ / Архетип", + description: "Сакральный символ («женщина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 167, + word: "оказаться", + partOfSpeech: "глагол", + frequency: 531.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («оказаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 168, + word: "русский", + partOfSpeech: "прилагательное", + frequency: 530.5, + category: "Свойство / Качество", + description: "Качество энергии («русский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 169, + word: "взять", + partOfSpeech: "глагол", + frequency: 525.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («взять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 170, + word: "прийти", + partOfSpeech: "глагол", + frequency: 523.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («прийти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 171, + word: "являться", + partOfSpeech: "глагол", + frequency: 522.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («являться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 172, + word: "деньги", + partOfSpeech: "существительное", + frequency: 512.4, + category: "Образ / Архетип", + description: "Сакральный символ («деньги»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 173, + word: "почему", + partOfSpeech: "наречие-местоимение", + frequency: 507.2, + category: "Направление", + description: "Модус судьбы («почему»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 174, + word: "вдруг", + partOfSpeech: "наречие", + frequency: 503.2, + category: "Вектор / Обстоятельство", + description: "Синхроничность, внезапное вмешательство высших сил, разрыв шаблона.", + ), + WordItem( + id: 175, + word: "любить", + partOfSpeech: "глагол", + frequency: 503.1, + category: "Действие / Трансформация", + description: "Раскрытие сердца, соединение с Источником, трансформация через бескорыстие.", + ), + WordItem( + id: 176, + word: "стоить", + partOfSpeech: "глагол", + frequency: 501.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («стоить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 177, + word: "почти", + partOfSpeech: "наречие", + frequency: 501.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («почти»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 178, + word: "земля", + partOfSpeech: "существительное", + frequency: 494.4, + category: "Образ / Архетип", + description: "Опора, материализация намерений, устойчивость, терпение и накопление сил.", + ), + WordItem( + id: 179, + word: "общий", + partOfSpeech: "прилагательное", + frequency: 492.4, + category: "Свойство / Качество", + description: "Качество энергии («общий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 180, + word: "ведь", + partOfSpeech: "частица", + frequency: 491.9, + category: "Импульс / Оттенок", + description: "Импульс модальности («ведь»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 181, + word: "механизм", + partOfSpeech: "существительное", + frequency: 490.4, + category: "Образ / Архетип", + description: "Закономерность причин и следствий, цикличность. Указывает на процессы, развивающиеся по строгим скрытым правилам.", + ), + WordItem( + id: 182, + word: "однако", + partOfSpeech: "союз", + frequency: 487.1, + category: "Узел / Отношение", + description: "Узел отношений («однако»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 183, + word: "сразу", + partOfSpeech: "наречие", + frequency: 486.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («сразу»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 184, + word: "хорошо", + partOfSpeech: "наречие", + frequency: 485.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («хорошо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 185, + word: "вода", + partOfSpeech: "существительное", + frequency: 484.8, + category: "Образ / Архетип", + description: "Поток эмоций, интуиция, глубинная память, очищение и способность огибать любые преграды.", + ), + WordItem( + id: 186, + word: "отец", + partOfSpeech: "существительное", + frequency: 484.1, + category: "Образ / Архетип", + description: "Закон, Высшая Воля, структура и духовный ориентир. Символизирует внутренний стержень, защиту границ и утверждение истины.", + ), + WordItem( + id: 187, + word: "высокий", + partOfSpeech: "прилагательное", + frequency: 483.3, + category: "Свойство / Качество", + description: "Качество энергии («высокий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 188, + word: "остаться", + partOfSpeech: "глагол", + frequency: 482.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («остаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 189, + word: "выйти", + partOfSpeech: "глагол", + frequency: 480.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («выйти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 190, + word: "много", + partOfSpeech: "числительное", + frequency: 480.0, + category: "Числовой код", + description: "Числовой код («много»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 191, + word: "проблема", + partOfSpeech: "существительное", + frequency: 474.9, + category: "Образ / Архетип", + description: "Сакральный символ («проблема»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 192, + word: "начать", + partOfSpeech: "глагол", + frequency: 473.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («начать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 193, + word: "хороший", + partOfSpeech: "прилагательное", + frequency: 471.4, + category: "Свойство / Качество", + description: "Качество энергии («хороший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 194, + word: "час", + partOfSpeech: "существительное", + frequency: 468.1, + category: "Образ / Архетип", + description: "Сакральный символ («час»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 195, + word: "сегодня", + partOfSpeech: "наречие", + frequency: 463.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («сегодня»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 196, + word: "право", + partOfSpeech: "существительное", + frequency: 461.4, + category: "Образ / Архетип", + description: "Сакральный символ («право»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 197, + word: "совсем", + partOfSpeech: "наречие", + frequency: 460.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («совсем»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 198, + word: "нога", + partOfSpeech: "существительное", + frequency: 459.2, + category: "Образ / Архетип", + description: "Сакральный символ («нога»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 199, + word: "считать", + partOfSpeech: "глагол", + frequency: 455.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («считать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 200, + word: "главный", + partOfSpeech: "прилагательное", + frequency: 454.6, + category: "Свойство / Качество", + description: "Качество энергии («главный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 201, + word: "решение", + partOfSpeech: "существительное", + frequency: 453.4, + category: "Образ / Архетип", + description: "Сакральный символ («решение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 202, + word: "увидеть", + partOfSpeech: "глагол", + frequency: 452.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («увидеть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 203, + word: "дверь", + partOfSpeech: "существительное", + frequency: 450.8, + category: "Образ / Архетип", + description: "Возможность, тайный проход, открытие нового пространства или необходимость закрыть прошлое.", + ), + WordItem( + id: 204, + word: "казаться", + partOfSpeech: "глагол", + frequency: 448.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («казаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 205, + word: "образ", + partOfSpeech: "существительное", + frequency: 445.9, + category: "Образ / Архетип", + description: "Сакральный символ («образ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 206, + word: "писать", + partOfSpeech: "глагол", + frequency: 444.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («писать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 207, + word: "история", + partOfSpeech: "существительное", + frequency: 443.9, + category: "Образ / Архетип", + description: "Сакральный символ («история»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 208, + word: "лучший", + partOfSpeech: "прилагательное", + frequency: 443.2, + category: "Свойство / Качество", + description: "Качество энергии («лучший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 209, + word: "власть", + partOfSpeech: "существительное", + frequency: 435.6, + category: "Образ / Архетип", + description: "Сакральный символ («власть»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 210, + word: "закон", + partOfSpeech: "существительное", + frequency: 433.4, + category: "Образ / Архетип", + description: "Космический порядок, баланс причин и следствий, справедливость мироздания.", + ), + WordItem( + id: 211, + word: "война", + partOfSpeech: "существительное", + frequency: 425.9, + category: "Образ / Архетип", + description: "Сакральный символ («война»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 212, + word: "бог", + partOfSpeech: "существительное", + frequency: 425.4, + category: "Образ / Архетип", + description: "Сакральный символ («бог»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 213, + word: "голос", + partOfSpeech: "существительное", + frequency: 424.5, + category: "Образ / Архетип", + description: "Проявление индивидуальности, смелость заявить о себе, звучание правды.", + ), + WordItem( + id: 214, + word: "найти", + partOfSpeech: "глагол", + frequency: 424.1, + category: "Действие / Трансформация", + description: "Обретение ответа, награда за упорство, встреча с предназначенным.", + ), + WordItem( + id: 215, + word: "поэтому", + partOfSpeech: "наречие-местоимение", + frequency: 421.3, + category: "Направление", + description: "Модус судьбы («поэтому»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 216, + word: "стоять", + partOfSpeech: "глагол", + frequency: 419.3, + category: "Действие / Трансформация", + description: "Непоколебимость, верность принципам, стойкость в бурях и сохранение центра.", + ), + WordItem( + id: 217, + word: "вообще", + partOfSpeech: "наречие", + frequency: 417.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вообще»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 218, + word: "тысяча", + partOfSpeech: "существительное", + frequency: 416.0, + category: "Образ / Архетип", + description: "Сакральный символ («тысяча»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 219, + word: "больше", + partOfSpeech: "наречие", + frequency: 415.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («больше»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 220, + word: "вместе", + partOfSpeech: "наречие", + frequency: 414.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вместе»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 221, + word: "маленький", + partOfSpeech: "прилагательное", + frequency: 414.1, + category: "Свойство / Качество", + description: "Качество энергии («маленький»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 222, + word: "книга", + partOfSpeech: "существительное", + frequency: 413.9, + category: "Образ / Архетип", + description: "Сакральный символ («книга»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 223, + word: "некоторый", + partOfSpeech: "местоименное прил.", + frequency: 410.9, + category: "Определение", + description: "Фокус осознания («некоторый»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 224, + word: "решить", + partOfSpeech: "глагол", + frequency: 409.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («решить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 225, + word: "любой", + partOfSpeech: "местоименное прил.", + frequency: 408.8, + category: "Определение", + description: "Фокус осознания («любой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 226, + word: "возможность", + partOfSpeech: "существительное", + frequency: 407.5, + category: "Образ / Архетип", + description: "Сакральный символ («возможность»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 227, + word: "результат", + partOfSpeech: "существительное", + frequency: 403.1, + category: "Образ / Архетип", + description: "Сакральный символ («результат»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 228, + word: "ночь", + partOfSpeech: "существительное", + frequency: 402.8, + category: "Образ / Архетип", + description: "Сакральный символ («ночь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 229, + word: "стол", + partOfSpeech: "существительное", + frequency: 402.5, + category: "Образ / Архетип", + description: "Сакральный символ («стол»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 230, + word: "никогда", + partOfSpeech: "наречие-местоимение", + frequency: 401.8, + category: "Направление", + description: "Абсолютный рубеж, невозможность возврата, закрытая дверь.", + ), + WordItem( + id: 231, + word: "имя", + partOfSpeech: "существительное", + frequency: 401.7, + category: "Образ / Архетип", + description: "Сакральный символ («имя»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 232, + word: "область", + partOfSpeech: "существительное", + frequency: 400.2, + category: "Образ / Архетип", + description: "Сакральный символ («область»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 233, + word: "молодой", + partOfSpeech: "прилагательное", + frequency: 400.0, + category: "Свойство / Качество", + description: "Качество энергии («молодой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 234, + word: "пройти", + partOfSpeech: "глагол", + frequency: 398.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («пройти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 235, + word: "например", + partOfSpeech: "наречие", + frequency: 398.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («например»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 236, + word: "заповедь", + partOfSpeech: "существительное", + frequency: 395.0, + category: "Образ / Архетип", + description: "Нравственный закон, высшее наставление, нерушимый компас в моменты смуты и сомнений.", + ), + WordItem( + id: 237, + word: "оно", + partOfSpeech: "местоимение", + frequency: 394.7, + category: "Фокус сознания", + description: "Суть явления, безличный закон, нейтральная сила природы.", + ), + WordItem( + id: 238, + word: "число", + partOfSpeech: "существительное", + frequency: 393.5, + category: "Образ / Архетип", + description: "Сакральный символ («число»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 239, + word: "компания", + partOfSpeech: "существительное", + frequency: 392.7, + category: "Образ / Архетип", + description: "Сакральный символ («компания»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 240, + word: "про", + partOfSpeech: "предлог", + frequency: 392.1, + category: "Связь / Направление", + description: "Вектор связи («про»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 241, + word: "государственный", + partOfSpeech: "прилагательное", + frequency: 391.3, + category: "Свойство / Качество", + description: "Качество энергии («государственный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 242, + word: "полный", + partOfSpeech: "прилагательное", + frequency: 390.6, + category: "Свойство / Качество", + description: "Качество энергии («полный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 243, + word: "принять", + partOfSpeech: "глагол", + frequency: 386.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («принять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 244, + word: "народ", + partOfSpeech: "существительное", + frequency: 385.6, + category: "Образ / Архетип", + description: "Сакральный символ («народ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 245, + word: "никакой", + partOfSpeech: "местоименное прил.", + frequency: 383.7, + category: "Определение", + description: "Фокус осознания («никакой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 246, + word: "советский", + partOfSpeech: "прилагательное", + frequency: 382.9, + category: "Свойство / Качество", + description: "Качество энергии («советский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 247, + word: "жена", + partOfSpeech: "существительное", + frequency: 376.8, + category: "Образ / Архетип", + description: "Сакральный символ («жена»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 248, + word: "настоящий", + partOfSpeech: "прилагательное", + frequency: 374.0, + category: "Свойство / Качество", + description: "Качество энергии («настоящий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 249, + word: "всякий", + partOfSpeech: "местоименное прил.", + frequency: 373.2, + category: "Определение", + description: "Фокус осознания («всякий»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 250, + word: "группа", + partOfSpeech: "существительное", + frequency: 372.8, + category: "Образ / Архетип", + description: "Сакральный символ («группа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 251, + word: "развитие", + partOfSpeech: "существительное", + frequency: 372.6, + category: "Образ / Архетип", + description: "Сакральный символ («развитие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 252, + word: "процесс", + partOfSpeech: "существительное", + frequency: 371.7, + category: "Образ / Архетип", + description: "Сакральный символ («процесс»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 253, + word: "суд", + partOfSpeech: "существительное", + frequency: 371.1, + category: "Образ / Архетип", + description: "Сакральный символ («суд»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 254, + word: "давать", + partOfSpeech: "глагол", + frequency: 370.7, + category: "Действие / Трансформация", + description: "Щедрость духа, запуск круговорота изобилия, освобождение от жадности.", + ), + WordItem( + id: 255, + word: "ответить", + partOfSpeech: "глагол", + frequency: 370.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («ответить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 256, + word: "старый", + partOfSpeech: "прилагательное", + frequency: 368.5, + category: "Свойство / Качество", + description: "Качество энергии («старый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 257, + word: "условие", + partOfSpeech: "существительное", + frequency: 368.1, + category: "Образ / Архетип", + description: "Сакральный символ («условие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 258, + word: "твой", + partOfSpeech: "местоименное прил.", + frequency: 366.6, + category: "Определение", + description: "Фокус осознания («твой»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 259, + word: "пока", + partOfSpeech: "союз", + frequency: 366.3, + category: "Узел / Отношение", + description: "Узел отношений («пока»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 260, + word: "средство", + partOfSpeech: "существительное", + frequency: 363.9, + category: "Образ / Архетип", + description: "Сакральный символ («средство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 261, + word: "помнить", + partOfSpeech: "глагол", + frequency: 363.1, + category: "Действие / Трансформация", + description: "Связь с корнями, интеграция прошлого опыта, уважение к урокам судьбы.", + ), + WordItem( + id: 262, + word: "начало", + partOfSpeech: "существительное", + frequency: 361.4, + category: "Образ / Архетип", + description: "Сакральный символ («начало»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 263, + word: "ждать", + partOfSpeech: "глагол", + frequency: 360.2, + category: "Действие / Трансформация", + description: "Священное терпение, доверие космическим ритмам созревания плода.", + ), + WordItem( + id: 264, + word: "свет", + partOfSpeech: "существительное", + frequency: 359.7, + category: "Образ / Архетип", + description: "Истина, осознанность, рассеяние тьмы, откровение и ясность пути.", + ), + WordItem( + id: 265, + word: "пора", + partOfSpeech: "существительное", + frequency: 358.2, + category: "Образ / Архетип", + description: "Сакральный символ («пора»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 266, + word: "путь", + partOfSpeech: "существительное", + frequency: 357.3, + category: "Образ / Архетип", + description: "Личное предназначение, духовная траектория, верность своему высшему призванию.", + ), + WordItem( + id: 267, + word: "душа", + partOfSpeech: "существительное", + frequency: 356.8, + category: "Образ / Архетип", + description: "Бессмертная искра сознания, вместилище глубинного опыта и связи с Источником.", + ), + WordItem( + id: 268, + word: "куда", + partOfSpeech: "наречие-местоимение", + frequency: 355.4, + category: "Направление", + description: "Модус судьбы («куда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 269, + word: "нужно", + partOfSpeech: "наречие", + frequency: 353.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («нужно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 270, + word: "разный", + partOfSpeech: "прилагательное", + frequency: 352.6, + category: "Свойство / Качество", + description: "Качество энергии («разный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 271, + word: "нужный", + partOfSpeech: "прилагательное", + frequency: 351.9, + category: "Свойство / Качество", + description: "Качество энергии («нужный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 272, + word: "уровень", + partOfSpeech: "существительное", + frequency: 348.5, + category: "Образ / Архетип", + description: "Сакральный символ («уровень»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 273, + word: "иной", + partOfSpeech: "местоименное прил.", + frequency: 348.3, + category: "Определение", + description: "Фокус осознания («иной»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 274, + word: "форма", + partOfSpeech: "существительное", + frequency: 347.8, + category: "Образ / Архетип", + description: "Сакральный символ («форма»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 275, + word: "связь", + partOfSpeech: "существительное", + frequency: 346.1, + category: "Образ / Архетип", + description: "Сакральный символ («связь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 276, + word: "уж", + partOfSpeech: "частица", + frequency: 344.4, + category: "Импульс / Оттенок", + description: "Импульс модальности («уж»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 277, + word: "минута", + partOfSpeech: "существительное", + frequency: 344.2, + category: "Образ / Архетип", + description: "Сакральный символ («минута»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 278, + word: "кроме", + partOfSpeech: "предлог", + frequency: 343.6, + category: "Связь / Направление", + description: "Вектор связи («кроме»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 279, + word: "находиться", + partOfSpeech: "глагол", + frequency: 342.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («находиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 280, + word: "опять", + partOfSpeech: "наречие", + frequency: 342.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («опять»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 281, + word: "многий", + partOfSpeech: "местоименное прил.", + frequency: 340.9, + category: "Определение", + description: "Фокус осознания («многий»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 282, + word: "белый", + partOfSpeech: "прилагательное", + frequency: 339.6, + category: "Свойство / Качество", + description: "Качество энергии («белый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 283, + word: "собственный", + partOfSpeech: "прилагательное", + frequency: 338.3, + category: "Свойство / Качество", + description: "Качество энергии («собственный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 284, + word: "улица", + partOfSpeech: "существительное", + frequency: 337.8, + category: "Образ / Архетип", + description: "Сакральный символ («улица»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 285, + word: "черный", + partOfSpeech: "прилагательное", + frequency: 337.5, + category: "Свойство / Качество", + description: "Качество энергии («черный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 286, + word: "написать", + partOfSpeech: "глагол", + frequency: 336.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («написать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 287, + word: "вечер", + partOfSpeech: "существительное", + frequency: 335.4, + category: "Образ / Архетип", + description: "Сакральный символ («вечер»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 288, + word: "снова", + partOfSpeech: "наречие", + frequency: 334.4, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («снова»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 289, + word: "основной", + partOfSpeech: "прилагательное", + frequency: 334.1, + category: "Свойство / Качество", + description: "Качество энергии («основной»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 290, + word: "качество", + partOfSpeech: "существительное", + frequency: 331.7, + category: "Образ / Архетип", + description: "Сакральный символ («качество»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 291, + word: "мысль", + partOfSpeech: "существительное", + frequency: 331.6, + category: "Образ / Архетип", + description: "Сакральный символ («мысль»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 292, + word: "дорога", + partOfSpeech: "существительное", + frequency: 330.1, + category: "Образ / Архетип", + description: "Странствие души, процесс поиска, динамика судьбы и неизбежность движения вперед.", + ), + WordItem( + id: 293, + word: "мать", + partOfSpeech: "существительное", + frequency: 330.1, + category: "Образ / Архетип", + description: "Первозданное Лоно, безусловное принятие, рождение формы и защита. Символ плодородия, истока жизненной силы и материи бытия.", + ), + WordItem( + id: 294, + word: "действие", + partOfSpeech: "существительное", + frequency: 329.3, + category: "Образ / Архетип", + description: "Сакральный символ («действие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 295, + word: "месяц", + partOfSpeech: "существительное", + frequency: 328.0, + category: "Образ / Архетип", + description: "Сакральный символ («месяц»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 296, + word: "оставаться", + partOfSpeech: "глагол", + frequency: 327.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («оставаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 297, + word: "государство", + partOfSpeech: "существительное", + frequency: 326.4, + category: "Образ / Архетип", + description: "Сакральный символ («государство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 298, + word: "язык", + partOfSpeech: "существительное", + frequency: 324.9, + category: "Образ / Архетип", + description: "Сакральный символ («язык»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 299, + word: "любовь", + partOfSpeech: "существительное", + frequency: 323.9, + category: "Образ / Архетип", + description: "Высшая связующая сила вселенной, растворение эго, целительный свет и благословение.", + ), + WordItem( + id: 300, + word: "взгляд", + partOfSpeech: "существительное", + frequency: 323.8, + category: "Образ / Архетип", + description: "Сакральный символ («взгляд»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 301, + word: "мудрость", + partOfSpeech: "существительное", + frequency: 322.6, + category: "Образ / Архетип", + description: "Глубинное понимание сути вещей, созерцание без осуждения, плод прожитого и осознанного опыта.", + ), + WordItem( + id: 302, + word: "играть", + partOfSpeech: "глагол", + frequency: 319.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («играть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 303, + word: "далекий", + partOfSpeech: "прилагательное", + frequency: 318.3, + category: "Свойство / Качество", + description: "Качество энергии («далекий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 304, + word: "лежать", + partOfSpeech: "глагол", + frequency: 318.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («лежать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 305, + word: "нельзя", + partOfSpeech: "наречие", + frequency: 317.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («нельзя»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 306, + word: "век", + partOfSpeech: "существительное", + frequency: 317.4, + category: "Образ / Архетип", + description: "Сакральный символ («век»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 307, + word: "школа", + partOfSpeech: "существительное", + frequency: 316.0, + category: "Образ / Архетип", + description: "Сакральный символ («школа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 308, + word: "подумать", + partOfSpeech: "глагол", + frequency: 315.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («подумать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 309, + word: "уйти", + partOfSpeech: "глагол", + frequency: 315.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («уйти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 310, + word: "цель", + partOfSpeech: "существительное", + frequency: 315.5, + category: "Образ / Архетип", + description: "Сакральный символ («цель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 311, + word: "среди", + partOfSpeech: "предлог", + frequency: 314.9, + category: "Связь / Направление", + description: "Вектор связи («среди»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 312, + word: "общество", + partOfSpeech: "существительное", + frequency: 314.7, + category: "Образ / Архетип", + description: "Сакральный символ («общество»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 313, + word: "посмотреть", + partOfSpeech: "глагол", + frequency: 314.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («посмотреть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 314, + word: "деятельность", + partOfSpeech: "существительное", + frequency: 313.5, + category: "Образ / Архетип", + description: "Сакральный символ («деятельность»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 315, + word: "организация", + partOfSpeech: "существительное", + frequency: 312.4, + category: "Образ / Архетип", + description: "Сакральный символ («организация»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 316, + word: "кто-то", + partOfSpeech: "местоимение", + frequency: 312.0, + category: "Фокус сознания", + description: "Фокус осознания («кто-то»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 317, + word: "вернуться", + partOfSpeech: "глагол", + frequency: 311.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («вернуться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 318, + word: "правитель", + partOfSpeech: "существительное", + frequency: 311.0, + category: "Образ / Архетип", + description: "Власть над собственной судьбой, суверенитет духа, ответственность за выбор и способность вести за собой.", + ), + WordItem( + id: 319, + word: "комната", + partOfSpeech: "существительное", + frequency: 310.7, + category: "Образ / Архетип", + description: "Сакральный символ («комната»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 320, + word: "порядок", + partOfSpeech: "существительное", + frequency: 307.6, + category: "Образ / Архетип", + description: "Сакральный символ («порядок»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 321, + word: "момент", + partOfSpeech: "существительное", + frequency: 306.8, + category: "Образ / Архетип", + description: "Сакральный символ («момент»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 322, + word: "театр", + partOfSpeech: "существительное", + frequency: 305.3, + category: "Образ / Архетип", + description: "Сакральный символ («театр»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 323, + word: "следовать", + partOfSpeech: "глагол", + frequency: 305.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («следовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 324, + word: "читать", + partOfSpeech: "глагол", + frequency: 304.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («читать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 325, + word: "письмо", + partOfSpeech: "существительное", + frequency: 304.3, + category: "Образ / Архетип", + description: "Сакральный символ («письмо»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 326, + word: "подобный", + partOfSpeech: "прилагательное", + frequency: 301.6, + category: "Свойство / Качество", + description: "Качество энергии («подобный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 327, + word: "следующий", + partOfSpeech: "прилагательное", + frequency: 301.4, + category: "Свойство / Качество", + description: "Качество энергии («следующий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 328, + word: "утро", + partOfSpeech: "существительное", + frequency: 301.3, + category: "Образ / Архетип", + description: "Сакральный символ («утро»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 329, + word: "особенно", + partOfSpeech: "наречие", + frequency: 300.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («особенно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 330, + word: "помощь", + partOfSpeech: "существительное", + frequency: 300.1, + category: "Образ / Архетип", + description: "Сакральный символ («помощь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 331, + word: "ситуация", + partOfSpeech: "существительное", + frequency: 298.8, + category: "Образ / Архетип", + description: "Сакральный символ («ситуация»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 332, + word: "роль", + partOfSpeech: "существительное", + frequency: 297.9, + category: "Образ / Архетип", + description: "Сакральный символ («роль»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 333, + word: "бывать", + partOfSpeech: "глагол", + frequency: 297.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («бывать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 334, + word: "ходить", + partOfSpeech: "глагол", + frequency: 296.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («ходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 335, + word: "сокровище", + partOfSpeech: "существительное", + frequency: 296.4, + category: "Образ / Архетип", + description: "Истинная ценность, духовный дар, скрытый потенциал. Олицетворяет то, что питает душу и требует бережного хранения.", + ), + WordItem( + id: 336, + word: "начинать", + partOfSpeech: "глагол", + frequency: 296.0, + category: "Действие / Трансформация", + description: "Священный импульс старта, нулевая точка творения, закладка зерна.", + ), + WordItem( + id: 337, + word: "появиться", + partOfSpeech: "глагол", + frequency: 294.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («появиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 338, + word: "смысл", + partOfSpeech: "существительное", + frequency: 294.6, + category: "Образ / Архетип", + description: "Сакральный символ («смысл»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 339, + word: "состояние", + partOfSpeech: "существительное", + frequency: 294.4, + category: "Образ / Архетип", + description: "Сакральный символ («состояние»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 340, + word: "называть", + partOfSpeech: "глагол", + frequency: 293.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («называть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 341, + word: "рядом", + partOfSpeech: "наречие", + frequency: 291.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («рядом»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 342, + word: "обитель", + partOfSpeech: "существительное", + frequency: 290.9, + category: "Образ / Архетип", + description: "Внутреннее святилище, безопасность, сокровенный покой. Место восстановления сил и укоренения души.", + ), + WordItem( + id: 343, + word: "назад", + partOfSpeech: "наречие", + frequency: 290.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («назад»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 344, + word: "равный", + partOfSpeech: "прилагательное", + frequency: 289.7, + category: "Свойство / Качество", + description: "Качество энергии («равный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 345, + word: "из-за", + partOfSpeech: "предлог", + frequency: 289.6, + category: "Связь / Направление", + description: "Вектор связи («из-за»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 346, + word: "орган", + partOfSpeech: "существительное", + frequency: 288.4, + category: "Образ / Архетип", + description: "Сакральный символ («орган»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 347, + word: "внимание", + partOfSpeech: "существительное", + frequency: 286.0, + category: "Образ / Архетип", + description: "Сакральный символ («внимание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 348, + word: "тело", + partOfSpeech: "существительное", + frequency: 285.9, + category: "Образ / Архетип", + description: "Сакральный символ («тело»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 349, + word: "труд", + partOfSpeech: "существительное", + frequency: 285.9, + category: "Образ / Архетип", + description: "Сакральный символ («труд»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 350, + word: "прийтись", + partOfSpeech: "глагол", + frequency: 285.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («прийтись»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 351, + word: "хотеться", + partOfSpeech: "глагол", + frequency: 285.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («хотеться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 352, + word: "сын", + partOfSpeech: "существительное", + frequency: 285.1, + category: "Образ / Архетип", + description: "Сакральный символ («сын»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 353, + word: "мера", + partOfSpeech: "существительное", + frequency: 284.3, + category: "Образ / Архетип", + description: "Чувство гармонии, золотая середина, предупреждение от крайностей и излишеств.", + ), + WordItem( + id: 354, + word: "пять", + partOfSpeech: "числительное", + frequency: 284.3, + category: "Числовой код", + description: "Числовой код («пять»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 355, + word: "смерть", + partOfSpeech: "существительное", + frequency: 284.1, + category: "Образ / Архетип", + description: "Великая трансформация, завершение цикла, освобождение от старой формы ради перерождения.", + ), + WordItem( + id: 356, + word: "живой", + partOfSpeech: "прилагательное", + frequency: 284.0, + category: "Свойство / Качество", + description: "Качество энергии («живой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 357, + word: "рынок", + partOfSpeech: "существительное", + frequency: 283.3, + category: "Образ / Архетип", + description: "Сакральный символ («рынок»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 358, + word: "программа", + partOfSpeech: "существительное", + frequency: 282.6, + category: "Образ / Архетип", + description: "Сакральный символ («программа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 359, + word: "задача", + partOfSpeech: "существительное", + frequency: 282.4, + category: "Образ / Архетип", + description: "Сакральный символ («задача»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 360, + word: "предприятие", + partOfSpeech: "существительное", + frequency: 281.6, + category: "Образ / Архетип", + description: "Сакральный символ («предприятие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 361, + word: "известный", + partOfSpeech: "прилагательное", + frequency: 281.1, + category: "Свойство / Качество", + description: "Качество энергии («известный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 362, + word: "окно", + partOfSpeech: "существительное", + frequency: 280.8, + category: "Образ / Архетип", + description: "Сакральный символ («окно»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 363, + word: "вести", + partOfSpeech: "глагол", + frequency: 280.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («вести»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 364, + word: "совершенно", + partOfSpeech: "наречие", + frequency: 280.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («совершенно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 365, + word: "военный", + partOfSpeech: "прилагательное", + frequency: 278.7, + category: "Свойство / Качество", + description: "Качество энергии («военный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 366, + word: "разговор", + partOfSpeech: "существительное", + frequency: 278.3, + category: "Образ / Архетип", + description: "Сакральный символ («разговор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 367, + word: "показать", + partOfSpeech: "глагол", + frequency: 277.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («показать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 368, + word: "правительство", + partOfSpeech: "существительное", + frequency: 277.7, + category: "Образ / Архетип", + description: "Сакральный символ («правительство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 369, + word: "важный", + partOfSpeech: "прилагательное", + frequency: 277.0, + category: "Свойство / Качество", + description: "Качество энергии («важный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 370, + word: "семья", + partOfSpeech: "существительное", + frequency: 276.6, + category: "Образ / Архетип", + description: "Сакральный символ («семья»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 371, + word: "великий", + partOfSpeech: "прилагательное", + frequency: 276.3, + category: "Свойство / Качество", + description: "Качество энергии («великий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 372, + word: "производство", + partOfSpeech: "существительное", + frequency: 275.6, + category: "Образ / Архетип", + description: "Сакральный символ («производство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 373, + word: "простой", + partOfSpeech: "прилагательное", + frequency: 275.3, + category: "Свойство / Качество", + description: "Качество энергии («простой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 374, + word: "значит", + partOfSpeech: "наречие", + frequency: 274.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («значит»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 375, + word: "третий", + partOfSpeech: "anum", + frequency: 274.7, + category: "Сакральный символ", + description: "Символический ключ («третий»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 376, + word: "сколько", + partOfSpeech: "числительное", + frequency: 273.4, + category: "Числовой код", + description: "Числовой код («сколько»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 377, + word: "огромный", + partOfSpeech: "прилагательное", + frequency: 272.1, + category: "Свойство / Качество", + description: "Качество энергии («огромный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 378, + word: "давно", + partOfSpeech: "наречие", + frequency: 272.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («давно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 379, + word: "политический", + partOfSpeech: "прилагательное", + frequency: 269.6, + category: "Свойство / Качество", + description: "Качество энергии («политический»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 380, + word: "информация", + partOfSpeech: "существительное", + frequency: 269.2, + category: "Образ / Архетип", + description: "Сакральный символ («информация»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 381, + word: "действительно", + partOfSpeech: "наречие", + frequency: 268.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («действительно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 382, + word: "положение", + partOfSpeech: "существительное", + frequency: 268.2, + category: "Образ / Архетип", + description: "Сакральный символ («положение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 383, + word: "поставить", + partOfSpeech: "глагол", + frequency: 267.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («поставить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 384, + word: "бояться", + partOfSpeech: "глагол", + frequency: 266.5, + category: "Действие / Трансформация", + description: "Сигнал границы комфорта, тень, требующая осознания и освещения светом разума.", + ), + WordItem( + id: 385, + word: "наконец", + partOfSpeech: "наречие", + frequency: 265.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («наконец»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 386, + word: "центр", + partOfSpeech: "существительное", + frequency: 265.9, + category: "Образ / Архетип", + description: "Сакральный символ («центр»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 387, + word: "происходить", + partOfSpeech: "глагол", + frequency: 263.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («происходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 388, + word: "ответ", + partOfSpeech: "существительное", + frequency: 263.3, + category: "Образ / Архетип", + description: "Сакральный символ («ответ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 389, + word: "муж", + partOfSpeech: "существительное", + frequency: 263.0, + category: "Образ / Архетип", + description: "Сакральный символ («муж»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 390, + word: "автор", + partOfSpeech: "существительное", + frequency: 262.1, + category: "Образ / Архетип", + description: "Сакральный символ («автор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 391, + word: "все-таки", + partOfSpeech: "частица", + frequency: 261.3, + category: "Импульс / Оттенок", + description: "Импульс модальности («все-таки»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 392, + word: "стена", + partOfSpeech: "существительное", + frequency: 261.0, + category: "Образ / Архетип", + description: "Сакральный символ («стена»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 393, + word: "существовать", + partOfSpeech: "глагол", + frequency: 260.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («существовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 394, + word: "интерес", + partOfSpeech: "существительное", + frequency: 260.6, + category: "Образ / Архетип", + description: "Сакральный символ («интерес»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 395, + word: "становиться", + partOfSpeech: "глагол", + frequency: 259.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («становиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 396, + word: "федерация", + partOfSpeech: "существительное", + frequency: 258.9, + category: "Образ / Архетип", + description: "Сакральный символ («федерация»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 397, + word: "правило", + partOfSpeech: "существительное", + frequency: 258.8, + category: "Образ / Архетип", + description: "Сакральный символ («правило»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 398, + word: "оба", + partOfSpeech: "числительное", + frequency: 258.1, + category: "Числовой код", + description: "Числовой код («оба»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 399, + word: "часто", + partOfSpeech: "наречие", + frequency: 257.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («часто»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 400, + word: "московский", + partOfSpeech: "прилагательное", + frequency: 257.3, + category: "Свойство / Качество", + description: "Качество энергии («московский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 401, + word: "управление", + partOfSpeech: "существительное", + frequency: 256.5, + category: "Образ / Архетип", + description: "Сакральный символ («управление»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 402, + word: "слышать", + partOfSpeech: "глагол", + frequency: 256.1, + category: "Действие / Трансформация", + description: "Восприимчивость к знакам мира, тонкая чуткость к интуиции и советам свыше.", + ), + WordItem( + id: 403, + word: "быстро", + partOfSpeech: "наречие", + frequency: 255.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («быстро»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 404, + word: "смочь", + partOfSpeech: "глагол", + frequency: 255.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («смочь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 405, + word: "заметить", + partOfSpeech: "глагол", + frequency: 253.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («заметить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 406, + word: "как-то", + partOfSpeech: "наречие-местоимение", + frequency: 253.2, + category: "Направление", + description: "Модус судьбы («как-то»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 407, + word: "мужчина", + partOfSpeech: "существительное", + frequency: 253.2, + category: "Образ / Архетип", + description: "Сакральный символ («мужчина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 408, + word: "долго", + partOfSpeech: "наречие", + frequency: 253.1, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («долго»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 409, + word: "правда", + partOfSpeech: "наречие", + frequency: 252.4, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («правда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 410, + word: "идея", + partOfSpeech: "существительное", + frequency: 250.8, + category: "Образ / Архетип", + description: "Сакральный символ («идея»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 411, + word: "партия", + partOfSpeech: "существительное", + frequency: 250.4, + category: "Образ / Архетип", + description: "Сакральный символ («партия»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 412, + word: "иногда", + partOfSpeech: "наречие", + frequency: 249.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («иногда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 413, + word: "использовать", + partOfSpeech: "глагол", + frequency: 249.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («использовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 414, + word: "пытаться", + partOfSpeech: "глагол", + frequency: 249.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («пытаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 415, + word: "готовый", + partOfSpeech: "прилагательное", + frequency: 248.5, + category: "Свойство / Качество", + description: "Качество энергии («готовый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 416, + word: "чуть", + partOfSpeech: "наречие", + frequency: 248.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («чуть»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 417, + word: "зачем", + partOfSpeech: "наречие-местоимение", + frequency: 247.7, + category: "Направление", + description: "Модус судьбы («зачем»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 418, + word: "представить", + partOfSpeech: "глагол", + frequency: 247.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («представить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 419, + word: "чувствовать", + partOfSpeech: "глагол", + frequency: 246.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («чувствовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 420, + word: "создать", + partOfSpeech: "глагол", + frequency: 245.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («создать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 421, + word: "совет", + partOfSpeech: "существительное", + frequency: 245.5, + category: "Образ / Архетип", + description: "Сакральный символ («совет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 422, + word: "счет", + partOfSpeech: "существительное", + frequency: 245.4, + category: "Образ / Архетип", + description: "Сакральный символ («счет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 423, + word: "сердце", + partOfSpeech: "существительное", + frequency: 245.1, + category: "Образ / Архетип", + description: "Центр чувств и духовного знания, компас истинных стремлений души.", + ), + WordItem( + id: 424, + word: "движение", + partOfSpeech: "существительное", + frequency: 244.7, + category: "Образ / Архетип", + description: "Сакральный символ («движение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 425, + word: "вещь", + partOfSpeech: "существительное", + frequency: 242.5, + category: "Образ / Архетип", + description: "Сакральный символ («вещь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 426, + word: "материал", + partOfSpeech: "существительное", + frequency: 242.4, + category: "Образ / Архетип", + description: "Сакральный символ («материал»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 427, + word: "неделя", + partOfSpeech: "существительное", + frequency: 242.2, + category: "Образ / Архетип", + description: "Сакральный символ («неделя»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 428, + word: "чувство", + partOfSpeech: "существительное", + frequency: 242.2, + category: "Образ / Архетип", + description: "Сакральный символ («чувство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 429, + word: "затем", + partOfSpeech: "наречие", + frequency: 241.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («затем»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 430, + word: "данный", + partOfSpeech: "местоименное прил.", + frequency: 241.1, + category: "Определение", + description: "Фокус осознания («данный»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 431, + word: "заниматься", + partOfSpeech: "глагол", + frequency: 240.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («заниматься»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 432, + word: "продолжать", + partOfSpeech: "глагол", + frequency: 240.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («продолжать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 433, + word: "красный", + partOfSpeech: "прилагательное", + frequency: 240.5, + category: "Свойство / Качество", + description: "Качество энергии («красный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 434, + word: "глава", + partOfSpeech: "существительное", + frequency: 240.2, + category: "Образ / Архетип", + description: "Сакральный символ («глава»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 435, + word: "ко", + partOfSpeech: "предлог", + frequency: 239.7, + category: "Связь / Направление", + description: "Вектор связи («ко»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 436, + word: "слушать", + partOfSpeech: "глагол", + frequency: 239.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («слушать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 437, + word: "наука", + partOfSpeech: "существительное", + frequency: 239.0, + category: "Образ / Архетип", + description: "Сакральный символ («наука»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 438, + word: "узнать", + partOfSpeech: "глагол", + frequency: 238.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («узнать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 439, + word: "ряд", + partOfSpeech: "существительное", + frequency: 238.0, + category: "Образ / Архетип", + description: "Сакральный символ («ряд»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 440, + word: "александр", + partOfSpeech: "s.PROP", + frequency: 237.8, + category: "Сакральный символ", + description: "Символический ключ («александр»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 441, + word: "вестник", + partOfSpeech: "существительное", + frequency: 237.5, + category: "Образ / Архетип", + description: "Внезапное знамение, озарение, знак свыше. Символизирует скорые перемены и необходимость быть чутким к знакам мира.", + ), + WordItem( + id: 442, + word: "причина", + partOfSpeech: "существительное", + frequency: 237.2, + category: "Образ / Архетип", + description: "Сакральный символ («причина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 443, + word: "против", + partOfSpeech: "предлог", + frequency: 236.5, + category: "Связь / Направление", + description: "Вектор связи («против»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 444, + word: "плечо", + partOfSpeech: "существительное", + frequency: 236.4, + category: "Образ / Архетип", + description: "Сакральный символ («плечо»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 445, + word: "современный", + partOfSpeech: "прилагательное", + frequency: 236.1, + category: "Свойство / Качество", + description: "Качество энергии («современный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 446, + word: "цена", + partOfSpeech: "существительное", + frequency: 236.1, + category: "Образ / Архетип", + description: "Сакральный символ («цена»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 447, + word: "план", + partOfSpeech: "существительное", + frequency: 235.3, + category: "Образ / Архетип", + description: "Сакральный символ («план»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 448, + word: "приехать", + partOfSpeech: "глагол", + frequency: 234.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («приехать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 449, + word: "речь", + partOfSpeech: "существительное", + frequency: 234.2, + category: "Образ / Архетип", + description: "Сакральный символ («речь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 450, + word: "четыре", + partOfSpeech: "числительное", + frequency: 232.7, + category: "Числовой код", + description: "Числовой код («четыре»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 451, + word: "отвечать", + partOfSpeech: "глагол", + frequency: 232.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («отвечать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 452, + word: "точка", + partOfSpeech: "существительное", + frequency: 232.2, + category: "Образ / Архетип", + description: "Сакральный символ («точка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 453, + word: "основа", + partOfSpeech: "существительное", + frequency: 231.0, + category: "Образ / Архетип", + description: "Сакральный символ («основа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 454, + word: "товарищ", + partOfSpeech: "существительное", + frequency: 230.6, + category: "Образ / Архетип", + description: "Сакральный символ («товарищ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 455, + word: "культура", + partOfSpeech: "существительное", + frequency: 230.2, + category: "Образ / Архетип", + description: "Сакральный символ («культура»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 456, + word: "слишком", + partOfSpeech: "наречие", + frequency: 230.1, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («слишком»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 457, + word: "рассказывать", + partOfSpeech: "глагол", + frequency: 230.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («рассказывать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 458, + word: "вполне", + partOfSpeech: "наречие", + frequency: 229.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вполне»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 459, + word: "далее", + partOfSpeech: "наречие", + frequency: 229.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («далее»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 460, + word: "рассказать", + partOfSpeech: "глагол", + frequency: 229.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («рассказать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 461, + word: "данные", + partOfSpeech: "существительное", + frequency: 229.0, + category: "Образ / Архетип", + description: "Сакральный символ («данные»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 462, + word: "представлять", + partOfSpeech: "глагол", + frequency: 228.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («представлять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 463, + word: "мнение", + partOfSpeech: "существительное", + frequency: 228.4, + category: "Образ / Архетип", + description: "Сакральный символ («мнение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 464, + word: "социальный", + partOfSpeech: "прилагательное", + frequency: 228.2, + category: "Свойство / Качество", + description: "Качество энергии («социальный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 465, + word: "около", + partOfSpeech: "предлог", + frequency: 228.1, + category: "Связь / Направление", + description: "Вектор связи («около»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 466, + word: "грамота", + partOfSpeech: "существительное", + frequency: 226.8, + category: "Образ / Архетип", + description: "Сакральный символ («грамота»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 467, + word: "институт", + partOfSpeech: "существительное", + frequency: 226.5, + category: "Образ / Архетип", + description: "Сакральный символ («институт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 468, + word: "ход", + partOfSpeech: "существительное", + frequency: 226.5, + category: "Образ / Архетип", + description: "Сакральный символ («ход»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 469, + word: "брать", + partOfSpeech: "глагол", + frequency: 226.3, + category: "Действие / Трансформация", + description: "Принятие даров судьбы, умение вместить благодать и оценить предложенное.", + ), + WordItem( + id: 470, + word: "забыть", + partOfSpeech: "глагол", + frequency: 226.0, + category: "Действие / Трансформация", + description: "Освобождение от груза прошлого, прощение, очищение ментального пространства.", + ), + WordItem( + id: 471, + word: "проект", + partOfSpeech: "существительное", + frequency: 225.9, + category: "Образ / Архетип", + description: "Сакральный символ («проект»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 472, + word: "ранний", + partOfSpeech: "прилагательное", + frequency: 225.7, + category: "Свойство / Качество", + description: "Качество энергии («ранний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 473, + word: "встреча", + partOfSpeech: "существительное", + frequency: 224.9, + category: "Образ / Архетип", + description: "Сакральный символ («встреча»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 474, + word: "особый", + partOfSpeech: "прилагательное", + frequency: 224.3, + category: "Свойство / Качество", + description: "Качество энергии («особый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 475, + word: "целый", + partOfSpeech: "прилагательное", + frequency: 222.5, + category: "Свойство / Качество", + description: "Качество энергии («целый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 476, + word: "наставник", + partOfSpeech: "существительное", + frequency: 222.2, + category: "Образ / Архетип", + description: "Сакральный символ («наставник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 477, + word: "провести", + partOfSpeech: "глагол", + frequency: 222.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («провести»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 478, + word: "спать", + partOfSpeech: "глагол", + frequency: 221.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («спать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 479, + word: "плохой", + partOfSpeech: "прилагательное", + frequency: 221.6, + category: "Свойство / Качество", + description: "Качество энергии («плохой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 480, + word: "может", + partOfSpeech: "наречие", + frequency: 221.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («может»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 481, + word: "впрочем", + partOfSpeech: "наречие", + frequency: 220.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («впрочем»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 482, + word: "сильный", + partOfSpeech: "прилагательное", + frequency: 220.5, + category: "Свойство / Качество", + description: "Качество энергии («сильный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 483, + word: "наверное", + partOfSpeech: "наречие", + frequency: 220.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («наверное»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 484, + word: "скорый", + partOfSpeech: "прилагательное", + frequency: 220.0, + category: "Свойство / Качество", + description: "Качество энергии («скорый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 485, + word: "срок", + partOfSpeech: "существительное", + frequency: 219.7, + category: "Образ / Архетип", + description: "Сакральный символ («срок»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 486, + word: "палец", + partOfSpeech: "существительное", + frequency: 219.1, + category: "Образ / Архетип", + description: "Сакральный символ («палец»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 487, + word: "опыт", + partOfSpeech: "существительное", + frequency: 218.8, + category: "Образ / Архетип", + description: "Сакральный символ («опыт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 488, + word: "помочь", + partOfSpeech: "глагол", + frequency: 218.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («помочь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 489, + word: "приходить", + partOfSpeech: "глагол", + frequency: 218.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («приходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 490, + word: "служба", + partOfSpeech: "существительное", + frequency: 218.1, + category: "Образ / Архетип", + description: "Сакральный символ («служба»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 491, + word: "крупный", + partOfSpeech: "прилагательное", + frequency: 217.3, + category: "Свойство / Качество", + description: "Качество энергии («крупный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 492, + word: "андрей", + partOfSpeech: "s.PROP", + frequency: 217.2, + category: "Сакральный символ", + description: "Символический ключ («андрей»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 493, + word: "внутренний", + partOfSpeech: "прилагательное", + frequency: 216.1, + category: "Свойство / Качество", + description: "Качество энергии («внутренний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 494, + word: "просить", + partOfSpeech: "глагол", + frequency: 215.9, + category: "Действие / Трансформация", + description: "Смирение эго, признание нужды в Высшей поддержке, раскрытие готовности принять.", + ), + WordItem( + id: 495, + word: "вспомнить", + partOfSpeech: "глагол", + frequency: 215.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («вспомнить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 496, + word: "открыть", + partOfSpeech: "глагол", + frequency: 214.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («открыть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 497, + word: "привести", + partOfSpeech: "глагол", + frequency: 214.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («привести»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 498, + word: "судьба", + partOfSpeech: "существительное", + frequency: 213.9, + category: "Образ / Архетип", + description: "Сакральный символ («судьба»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 499, + word: "девушка", + partOfSpeech: "существительное", + frequency: 213.3, + category: "Образ / Архетип", + description: "Сакральный символ («девушка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 500, + word: "поскольку", + partOfSpeech: "союз", + frequency: 212.8, + category: "Узел / Отношение", + description: "Узел отношений («поскольку»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 501, + word: "очередь", + partOfSpeech: "существительное", + frequency: 212.5, + category: "Образ / Архетип", + description: "Сакральный символ («очередь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 502, + word: "лес", + partOfSpeech: "существительное", + frequency: 211.5, + category: "Образ / Архетип", + description: "Лабиринт подсознания, древние тайны, испытание неизвестностью и единение с природой.", + ), + WordItem( + id: 503, + word: "пусть", + partOfSpeech: "частица", + frequency: 211.0, + category: "Импульс / Оттенок", + description: "Импульс модальности («пусть»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 504, + word: "экономический", + partOfSpeech: "прилагательное", + frequency: 210.6, + category: "Свойство / Качество", + description: "Качество энергии («экономический»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 505, + word: "оставить", + partOfSpeech: "глагол", + frequency: 210.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («оставить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 506, + word: "правый", + partOfSpeech: "прилагательное", + frequency: 210.4, + category: "Свойство / Качество", + description: "Качество энергии («правый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 507, + word: "состав", + partOfSpeech: "существительное", + frequency: 209.8, + category: "Образ / Архетип", + description: "Сакральный символ («состав»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 508, + word: "сергей", + partOfSpeech: "s.PROP", + frequency: 209.5, + category: "Сакральный символ", + description: "Символический ключ («сергей»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 509, + word: "словно", + partOfSpeech: "союз", + frequency: 209.2, + category: "Узел / Отношение", + description: "Узел отношений («словно»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 510, + word: "федеральный", + partOfSpeech: "прилагательное", + frequency: 208.9, + category: "Свойство / Качество", + description: "Качество энергии («федеральный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 511, + word: "спрашивать", + partOfSpeech: "глагол", + frequency: 208.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («спрашивать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 512, + word: "принимать", + partOfSpeech: "глагол", + frequency: 207.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («принимать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 513, + word: "член", + partOfSpeech: "существительное", + frequency: 207.4, + category: "Образ / Архетип", + description: "Сакральный символ («член»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 514, + word: "искать", + partOfSpeech: "глагол", + frequency: 206.9, + category: "Действие / Трансформация", + description: "Духовный поиск, жажда познания, готовность к открытиям и сомнениям.", + ), + WordItem( + id: 515, + word: "близкий", + partOfSpeech: "прилагательное", + frequency: 206.8, + category: "Свойство / Качество", + description: "Качество энергии («близкий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 516, + word: "количество", + partOfSpeech: "существительное", + frequency: 206.7, + category: "Образ / Архетип", + description: "Сакральный символ («количество»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 517, + word: "похожий", + partOfSpeech: "прилагательное", + frequency: 206.5, + category: "Свойство / Качество", + description: "Качество энергии («похожий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 518, + word: "событие", + partOfSpeech: "существительное", + frequency: 206.5, + category: "Образ / Архетип", + description: "Сакральный символ («событие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 519, + word: "объект", + partOfSpeech: "существительное", + frequency: 206.4, + category: "Образ / Архетип", + description: "Сакральный символ («объект»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 520, + word: "зал", + partOfSpeech: "существительное", + frequency: 206.3, + category: "Образ / Архетип", + description: "Сакральный символ («зал»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 521, + word: "создание", + partOfSpeech: "существительное", + frequency: 206.1, + category: "Образ / Архетип", + description: "Сакральный символ («создание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 522, + word: "войти", + partOfSpeech: "глагол", + frequency: 205.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («войти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 523, + word: "различный", + partOfSpeech: "прилагательное", + frequency: 205.5, + category: "Свойство / Качество", + description: "Качество энергии («различный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 524, + word: "значение", + partOfSpeech: "существительное", + frequency: 205.1, + category: "Образ / Архетип", + description: "Сакральный символ («значение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 525, + word: "назвать", + partOfSpeech: "глагол", + frequency: 205.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («назвать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 526, + word: "достаточно", + partOfSpeech: "наречие", + frequency: 204.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («достаточно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 527, + word: "период", + partOfSpeech: "существительное", + frequency: 204.2, + category: "Образ / Архетип", + description: "Сакральный символ («период»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 528, + word: "хоть", + partOfSpeech: "частица", + frequency: 203.9, + category: "Импульс / Оттенок", + description: "Импульс модальности («хоть»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 529, + word: "шаг", + partOfSpeech: "существительное", + frequency: 203.8, + category: "Образ / Архетип", + description: "Сакральный символ («шаг»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 530, + word: "необходимый", + partOfSpeech: "прилагательное", + frequency: 203.7, + category: "Свойство / Качество", + description: "Качество энергии («необходимый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 531, + word: "успеть", + partOfSpeech: "глагол", + frequency: 203.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («успеть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 532, + word: "произойти", + partOfSpeech: "глагол", + frequency: 203.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («произойти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 533, + word: "брат", + partOfSpeech: "существительное", + frequency: 203.0, + category: "Образ / Архетип", + description: "Сакральный символ («брат»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 534, + word: "искусство", + partOfSpeech: "существительное", + frequency: 202.6, + category: "Образ / Архетип", + description: "Сакральный символ («искусство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 535, + word: "единственный", + partOfSpeech: "прилагательное", + frequency: 202.2, + category: "Свойство / Качество", + description: "Качество энергии («единственный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 536, + word: "легкий", + partOfSpeech: "прилагательное", + frequency: 202.1, + category: "Свойство / Качество", + description: "Качество энергии («легкий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 537, + word: "структура", + partOfSpeech: "существительное", + frequency: 202.1, + category: "Образ / Архетип", + description: "Сакральный символ («структура»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 538, + word: "выходить", + partOfSpeech: "глагол", + frequency: 201.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («выходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 539, + word: "номер", + partOfSpeech: "существительное", + frequency: 201.2, + category: "Образ / Архетип", + description: "Сакральный символ («номер»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 540, + word: "предложить", + partOfSpeech: "глагол", + frequency: 201.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («предложить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 541, + word: "пример", + partOfSpeech: "существительное", + frequency: 201.2, + category: "Образ / Архетип", + description: "Сакральный символ («пример»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 542, + word: "пить", + partOfSpeech: "глагол", + frequency: 200.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («пить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 543, + word: "исследование", + partOfSpeech: "существительное", + frequency: 200.5, + category: "Образ / Архетип", + description: "Сакральный символ («исследование»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 544, + word: "гражданин", + partOfSpeech: "существительное", + frequency: 199.4, + category: "Образ / Архетип", + description: "Сакральный символ («гражданин»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 545, + word: "глядеть", + partOfSpeech: "глагол", + frequency: 199.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («глядеть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 546, + word: "человеческий", + partOfSpeech: "прилагательное", + frequency: 199.3, + category: "Свойство / Качество", + description: "Качество энергии («человеческий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 547, + word: "игра", + partOfSpeech: "существительное", + frequency: 199.0, + category: "Образ / Архетип", + description: "Сакральный символ («игра»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 548, + word: "начальник", + partOfSpeech: "существительное", + frequency: 198.9, + category: "Образ / Архетип", + description: "Сакральный символ («начальник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 549, + word: "сей", + partOfSpeech: "местоименное прил.", + frequency: 198.6, + category: "Определение", + description: "Фокус осознания («сей»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 550, + word: "рост", + partOfSpeech: "существительное", + frequency: 198.4, + category: "Образ / Архетип", + description: "Сакральный символ («рост»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 551, + word: "ехать", + partOfSpeech: "глагол", + frequency: 198.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («ехать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 552, + word: "международный", + partOfSpeech: "прилагательное", + frequency: 198.2, + category: "Свойство / Качество", + description: "Качество энергии («международный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 553, + word: "тема", + partOfSpeech: "существительное", + frequency: 198.1, + category: "Образ / Архетип", + description: "Сакральный символ («тема»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 554, + word: "принцип", + partOfSpeech: "существительное", + frequency: 197.9, + category: "Образ / Архетип", + description: "Сакральный символ («принцип»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 555, + word: "дорогой", + partOfSpeech: "прилагательное", + frequency: 197.7, + category: "Свойство / Качество", + description: "Качество энергии («дорогой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 556, + word: "попасть", + partOfSpeech: "глагол", + frequency: 197.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («попасть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 557, + word: "десять", + partOfSpeech: "числительное", + frequency: 197.4, + category: "Числовой код", + description: "Числовой код («десять»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 558, + word: "начаться", + partOfSpeech: "глагол", + frequency: 197.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («начаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 559, + word: "верить", + partOfSpeech: "глагол", + frequency: 197.1, + category: "Действие / Трансформация", + description: "Связь с невидимым, опора на высшие законы, маяк во тьме неизвестности.", + ), + WordItem( + id: 560, + word: "метод", + partOfSpeech: "существительное", + frequency: 197.0, + category: "Образ / Архетип", + description: "Сакральный символ («метод»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 561, + word: "тип", + partOfSpeech: "существительное", + frequency: 197.0, + category: "Образ / Архетип", + description: "Сакральный символ («тип»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 562, + word: "фильм", + partOfSpeech: "существительное", + frequency: 196.8, + category: "Образ / Архетип", + description: "Сакральный символ («фильм»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 563, + word: "небольшой", + partOfSpeech: "прилагательное", + frequency: 196.6, + category: "Свойство / Качество", + description: "Качество энергии («небольшой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 564, + word: "держать", + partOfSpeech: "глагол", + frequency: 196.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («держать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 565, + word: "либо", + partOfSpeech: "союз", + frequency: 195.7, + category: "Узел / Отношение", + description: "Узел отношений («либо»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 566, + word: "позволять", + partOfSpeech: "глагол", + frequency: 194.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («позволять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 567, + word: "край", + partOfSpeech: "существительное", + frequency: 194.0, + category: "Образ / Архетип", + description: "Сакральный символ («край»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 568, + word: "местный", + partOfSpeech: "прилагательное", + frequency: 193.3, + category: "Свойство / Качество", + description: "Качество энергии («местный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 569, + word: "менее", + partOfSpeech: "наречие", + frequency: 192.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («менее»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 570, + word: "сша", + partOfSpeech: "s.PROP", + frequency: 192.9, + category: "Сакральный символ", + description: "Символический ключ («сша»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 571, + word: "гость", + partOfSpeech: "существительное", + frequency: 192.7, + category: "Образ / Архетип", + description: "Сакральный символ («гость»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 572, + word: "купить", + partOfSpeech: "глагол", + frequency: 192.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («купить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 573, + word: "уходить", + partOfSpeech: "глагол", + frequency: 192.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («уходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 574, + word: "собираться", + partOfSpeech: "глагол", + frequency: 192.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («собираться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 575, + word: "воздух", + partOfSpeech: "существительное", + frequency: 192.2, + category: "Образ / Архетип", + description: "Мысль, свобода, дыхание жизни, свежее вдохновение и легкость перемен.", + ), + WordItem( + id: 576, + word: "туда", + partOfSpeech: "наречие-местоимение", + frequency: 191.7, + category: "Направление", + description: "Модус судьбы («туда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 577, + word: "относиться", + partOfSpeech: "глагол", + frequency: 191.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («относиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 578, + word: "бывший", + partOfSpeech: "прилагательное", + frequency: 191.5, + category: "Свойство / Качество", + description: "Качество энергии («бывший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 579, + word: "требовать", + partOfSpeech: "глагол", + frequency: 190.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («требовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 580, + word: "характер", + partOfSpeech: "существительное", + frequency: 190.7, + category: "Образ / Архетип", + description: "Сакральный символ («характер»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 581, + word: "борьба", + partOfSpeech: "существительное", + frequency: 190.5, + category: "Образ / Архетип", + description: "Сакральный символ («борьба»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 582, + word: "использование", + partOfSpeech: "существительное", + frequency: 190.3, + category: "Образ / Архетип", + description: "Сакральный символ («использование»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 583, + word: "кстати", + partOfSpeech: "наречие", + frequency: 190.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («кстати»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 584, + word: "подойти", + partOfSpeech: "глагол", + frequency: 190.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («подойти»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 585, + word: "иван", + partOfSpeech: "s.PROP", + frequency: 189.9, + category: "Сакральный символ", + description: "Символический ключ («иван»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 586, + word: "рф", + partOfSpeech: "s.PROP", + frequency: 189.4, + category: "Сакральный символ", + description: "Символический ключ («рф»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 587, + word: "размер", + partOfSpeech: "существительное", + frequency: 189.3, + category: "Образ / Архетип", + description: "Сакральный символ («размер»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 588, + word: "удаться", + partOfSpeech: "глагол", + frequency: 189.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («удаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 589, + word: "образование", + partOfSpeech: "существительное", + frequency: 188.9, + category: "Образ / Архетип", + description: "Сакральный символ («образование»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 590, + word: "получать", + partOfSpeech: "глагол", + frequency: 188.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («получать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 591, + word: "владимир", + partOfSpeech: "s.PROP", + frequency: 188.0, + category: "Сакральный символ", + description: "Символический ключ («владимир»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 592, + word: "мальчик", + partOfSpeech: "существительное", + frequency: 188.0, + category: "Образ / Архетип", + description: "Сакральный символ («мальчик»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 593, + word: "кровь", + partOfSpeech: "существительное", + frequency: 187.8, + category: "Образ / Архетип", + description: "Сакральный символ («кровь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 594, + word: "район", + partOfSpeech: "существительное", + frequency: 187.8, + category: "Образ / Архетип", + description: "Сакральный символ («район»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 595, + word: "небо", + partOfSpeech: "существительное", + frequency: 187.6, + category: "Образ / Архетип", + description: "Сакральный символ («небо»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 596, + word: "американский", + partOfSpeech: "прилагательное", + frequency: 186.5, + category: "Свойство / Качество", + description: "Качество энергии («американский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 597, + word: "армия", + partOfSpeech: "существительное", + frequency: 186.4, + category: "Образ / Архетип", + description: "Сакральный символ («армия»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 598, + word: "класс", + partOfSpeech: "существительное", + frequency: 185.8, + category: "Образ / Архетип", + description: "Сакральный символ («класс»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 599, + word: "представитель", + partOfSpeech: "существительное", + frequency: 185.7, + category: "Образ / Архетип", + description: "Сакральный символ («представитель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 600, + word: "участие", + partOfSpeech: "существительное", + frequency: 185.6, + category: "Образ / Архетип", + description: "Сакральный символ («участие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 601, + word: "девочка", + partOfSpeech: "существительное", + frequency: 185.1, + category: "Образ / Архетип", + description: "Сакральный символ («девочка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 602, + word: "политика", + partOfSpeech: "существительное", + frequency: 184.9, + category: "Образ / Архетип", + description: "Сакральный символ («политика»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 603, + word: "сначала", + partOfSpeech: "наречие", + frequency: 184.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («сначала»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 604, + word: "герой", + partOfSpeech: "существительное", + frequency: 184.0, + category: "Образ / Архетип", + description: "Сакральный символ («герой»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 605, + word: "картина", + partOfSpeech: "существительное", + frequency: 183.9, + category: "Образ / Архетип", + description: "Сакральный символ («картина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 606, + word: "широкий", + partOfSpeech: "прилагательное", + frequency: 183.9, + category: "Свойство / Качество", + description: "Качество энергии («широкий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 607, + word: "дар", + partOfSpeech: "существительное", + frequency: 183.1, + category: "Образ / Архетип", + description: "Благодать, неожиданная помощь свыше, талант или возможность, требующая бескорыстного раскрытия.", + ), + WordItem( + id: 608, + word: "спина", + partOfSpeech: "существительное", + frequency: 183.1, + category: "Образ / Архетип", + description: "Сакральный символ («спина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 609, + word: "территория", + partOfSpeech: "существительное", + frequency: 182.9, + category: "Образ / Архетип", + description: "Сакральный символ («территория»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 610, + word: "мировой", + partOfSpeech: "прилагательное", + frequency: 182.3, + category: "Свойство / Качество", + description: "Качество энергии («мировой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 611, + word: "пол", + partOfSpeech: "существительное", + frequency: 181.9, + category: "Образ / Архетип", + description: "Сакральный символ («пол»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 612, + word: "тяжелый", + partOfSpeech: "прилагательное", + frequency: 180.3, + category: "Свойство / Качество", + description: "Качество энергии («тяжелый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 613, + word: "довольно", + partOfSpeech: "наречие", + frequency: 180.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («довольно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 614, + word: "поле", + partOfSpeech: "существительное", + frequency: 180.2, + category: "Образ / Архетип", + description: "Сакральный символ («поле»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 615, + word: "ж", + partOfSpeech: "частица", + frequency: 179.9, + category: "Импульс / Оттенок", + description: "Импульс модальности («ж»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 616, + word: "изменение", + partOfSpeech: "существительное", + frequency: 179.8, + category: "Образ / Архетип", + description: "Сакральный символ («изменение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 617, + word: "умереть", + partOfSpeech: "глагол", + frequency: 179.7, + category: "Действие / Трансформация", + description: "Сбрасывание отжившей оболочки, переход на иной вибрационный уровень.", + ), + WordItem( + id: 618, + word: "направление", + partOfSpeech: "существительное", + frequency: 179.2, + category: "Образ / Архетип", + description: "Сакральный символ («направление»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 619, + word: "рисунок", + partOfSpeech: "существительное", + frequency: 179.2, + category: "Образ / Архетип", + description: "Сакральный символ («рисунок»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 620, + word: "течение", + partOfSpeech: "существительное", + frequency: 179.2, + category: "Образ / Архетип", + description: "Сакральный символ («течение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 621, + word: "возможный", + partOfSpeech: "прилагательное", + frequency: 179.1, + category: "Свойство / Качество", + description: "Качество энергии («возможный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 622, + word: "церковь", + partOfSpeech: "существительное", + frequency: 178.6, + category: "Образ / Архетип", + description: "Сакральный символ («церковь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 623, + word: "банк", + partOfSpeech: "существительное", + frequency: 178.1, + category: "Образ / Архетип", + description: "Сакральный символ («банк»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 624, + word: "отдельный", + partOfSpeech: "прилагательное", + frequency: 177.5, + category: "Свойство / Качество", + description: "Качество энергии («отдельный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 625, + word: "средний", + partOfSpeech: "прилагательное", + frequency: 177.3, + category: "Свойство / Качество", + description: "Качество энергии («средний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 626, + word: "красивый", + partOfSpeech: "прилагательное", + frequency: 177.2, + category: "Свойство / Качество", + description: "Качество энергии («красивый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 627, + word: "сцена", + partOfSpeech: "существительное", + frequency: 177.2, + category: "Образ / Архетип", + description: "Сакральный символ («сцена»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 628, + word: "население", + partOfSpeech: "существительное", + frequency: 176.5, + category: "Образ / Архетип", + description: "Сакральный символ («население»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 629, + word: "большинство", + partOfSpeech: "существительное", + frequency: 176.1, + category: "Образ / Архетип", + description: "Сакральный символ («большинство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 630, + word: "сесть", + partOfSpeech: "глагол", + frequency: 175.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («сесть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 631, + word: "двадцать", + partOfSpeech: "числительное", + frequency: 175.8, + category: "Числовой код", + description: "Числовой код («двадцать»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 632, + word: "случиться", + partOfSpeech: "глагол", + frequency: 175.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («случиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 633, + word: "музыка", + partOfSpeech: "существительное", + frequency: 175.7, + category: "Образ / Архетип", + description: "Сакральный символ («музыка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 634, + word: "короткий", + partOfSpeech: "прилагательное", + frequency: 175.6, + category: "Свойство / Качество", + description: "Качество энергии («короткий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 635, + word: "проходить", + partOfSpeech: "глагол", + frequency: 175.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («проходить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 636, + word: "составлять", + partOfSpeech: "глагол", + frequency: 175.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («составлять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 637, + word: "свобода", + partOfSpeech: "существительное", + frequency: 174.9, + category: "Образ / Архетип", + description: "Сакральный символ («свобода»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 638, + word: "память", + partOfSpeech: "существительное", + frequency: 174.5, + category: "Образ / Архетип", + description: "Сакральный символ («память»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 639, + word: "приходиться", + partOfSpeech: "глагол", + frequency: 174.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («приходиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 640, + word: "причем", + partOfSpeech: "союз", + frequency: 174.4, + category: "Узел / Отношение", + description: "Узел отношений («причем»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 641, + word: "команда", + partOfSpeech: "существительное", + frequency: 174.2, + category: "Образ / Архетип", + description: "Сакральный символ («команда»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 642, + word: "установить", + partOfSpeech: "глагол", + frequency: 174.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («установить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 643, + word: "союз", + partOfSpeech: "существительное", + frequency: 173.9, + category: "Образ / Архетип", + description: "Сакральный символ («союз»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 644, + word: "будто", + partOfSpeech: "союз", + frequency: 173.8, + category: "Узел / Отношение", + description: "Узел отношений («будто»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 645, + word: "поднять", + partOfSpeech: "глагол", + frequency: 173.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («поднять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 646, + word: "врач", + partOfSpeech: "существительное", + frequency: 173.1, + category: "Образ / Архетип", + description: "Сакральный символ («врач»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 647, + word: "серьезный", + partOfSpeech: "прилагательное", + frequency: 173.0, + category: "Свойство / Качество", + description: "Качество энергии («серьезный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 648, + word: "договор", + partOfSpeech: "существительное", + frequency: 172.8, + category: "Образ / Архетип", + description: "Сакральный символ («договор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 649, + word: "стараться", + partOfSpeech: "глагол", + frequency: 172.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («стараться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 650, + word: "уметь", + partOfSpeech: "глагол", + frequency: 172.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («уметь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 651, + word: "встать", + partOfSpeech: "глагол", + frequency: 172.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («встать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 652, + word: "дерево", + partOfSpeech: "существительное", + frequency: 171.9, + category: "Образ / Архетип", + description: "Сакральный символ («дерево»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 653, + word: "интересный", + partOfSpeech: "прилагательное", + frequency: 171.9, + category: "Свойство / Качество", + description: "Качество энергии («интересный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 654, + word: "факт", + partOfSpeech: "существительное", + frequency: 171.3, + category: "Образ / Архетип", + description: "Сакральный символ («факт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 655, + word: "добрый", + partOfSpeech: "прилагательное", + frequency: 171.1, + category: "Свойство / Качество", + description: "Качество энергии («добрый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 656, + word: "всего", + partOfSpeech: "частица", + frequency: 170.7, + category: "Импульс / Оттенок", + description: "Импульс модальности («всего»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 657, + word: "хозяин", + partOfSpeech: "существительное", + frequency: 170.6, + category: "Образ / Архетип", + description: "Сакральный символ («хозяин»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 658, + word: "национальный", + partOfSpeech: "прилагательное", + frequency: 170.3, + category: "Свойство / Качество", + description: "Качество энергии («национальный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 659, + word: "однажды", + partOfSpeech: "наречие", + frequency: 170.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («однажды»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 660, + word: "длинный", + partOfSpeech: "прилагательное", + frequency: 170.1, + category: "Свойство / Качество", + description: "Качество энергии («длинный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 661, + word: "природа", + partOfSpeech: "существительное", + frequency: 169.9, + category: "Образ / Архетип", + description: "Сакральный символ («природа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 662, + word: "домой", + partOfSpeech: "наречие", + frequency: 169.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («домой»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 663, + word: "страшный", + partOfSpeech: "прилагательное", + frequency: 169.1, + category: "Свойство / Качество", + description: "Качество энергии («страшный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 664, + word: "прошлый", + partOfSpeech: "прилагательное", + frequency: 169.0, + category: "Свойство / Качество", + description: "Качество энергии («прошлый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 665, + word: "общественный", + partOfSpeech: "прилагательное", + frequency: 168.1, + category: "Свойство / Качество", + description: "Качество энергии («общественный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 666, + word: "угол", + partOfSpeech: "существительное", + frequency: 168.1, + category: "Образ / Архетип", + description: "Сакральный символ («угол»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 667, + word: "чтоб", + partOfSpeech: "союз", + frequency: 168.0, + category: "Узел / Отношение", + description: "Узел отношений («чтоб»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 668, + word: "зов", + partOfSpeech: "существительное", + frequency: 167.8, + category: "Образ / Архетип", + description: "Пробуждение души, импульс к началу пути, зов предназначения, требующий ответа.", + ), + WordItem( + id: 669, + word: "позиция", + partOfSpeech: "существительное", + frequency: 167.6, + category: "Образ / Архетип", + description: "Сакральный символ («позиция»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 670, + word: "проводить", + partOfSpeech: "глагол", + frequency: 167.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («проводить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 671, + word: "скоро", + partOfSpeech: "наречие", + frequency: 167.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («скоро»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 672, + word: "наиболее", + partOfSpeech: "наречие", + frequency: 167.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («наиболее»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 673, + word: "двор", + partOfSpeech: "существительное", + frequency: 166.9, + category: "Образ / Архетип", + description: "Сакральный символ («двор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 674, + word: "обычно", + partOfSpeech: "наречие", + frequency: 166.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («обычно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 675, + word: "сталин", + partOfSpeech: "s.PROP", + frequency: 166.7, + category: "Сакральный символ", + description: "Символический ключ («сталин»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 676, + word: "бросить", + partOfSpeech: "глагол", + frequency: 166.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («бросить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 677, + word: "разве", + partOfSpeech: "частица", + frequency: 166.4, + category: "Импульс / Оттенок", + description: "Импульс модальности («разве»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 678, + word: "писатель", + partOfSpeech: "существительное", + frequency: 166.3, + category: "Образ / Архетип", + description: "Сакральный символ («писатель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 679, + word: "самолет", + partOfSpeech: "существительное", + frequency: 166.1, + category: "Образ / Архетип", + description: "Сакральный символ («самолет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 680, + word: "объем", + partOfSpeech: "существительное", + frequency: 165.8, + category: "Образ / Архетип", + description: "Сакральный символ («объем»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 681, + word: "далеко", + partOfSpeech: "наречие", + frequency: 165.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («далеко»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 682, + word: "род", + partOfSpeech: "существительное", + frequency: 165.5, + category: "Образ / Архетип", + description: "Сакральный символ («род»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 683, + word: "солнце", + partOfSpeech: "существительное", + frequency: 165.2, + category: "Образ / Архетип", + description: "Ясный центр самости, радость, витальность, триумф духа и проявленное лидерство.", + ), + WordItem( + id: 684, + word: "вера", + partOfSpeech: "существительное", + frequency: 165.1, + category: "Образ / Архетип", + description: "Сакральный символ («вера»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 685, + word: "берег", + partOfSpeech: "существительное", + frequency: 164.7, + category: "Образ / Архетип", + description: "Сакральный символ («берег»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 686, + word: "спектакль", + partOfSpeech: "существительное", + frequency: 164.7, + category: "Образ / Архетип", + description: "Сакральный символ («спектакль»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 687, + word: "фирма", + partOfSpeech: "существительное", + frequency: 164.4, + category: "Образ / Архетип", + description: "Сакральный символ («фирма»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 688, + word: "николай", + partOfSpeech: "s.PROP", + frequency: 164.2, + category: "Сакральный символ", + description: "Символический ключ («николай»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 689, + word: "способ", + partOfSpeech: "существительное", + frequency: 164.2, + category: "Образ / Архетип", + description: "Сакральный символ («способ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 690, + word: "завод", + partOfSpeech: "существительное", + frequency: 164.0, + category: "Образ / Архетип", + description: "Сакральный символ («завод»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 691, + word: "цвет", + partOfSpeech: "существительное", + frequency: 163.6, + category: "Образ / Архетип", + description: "Сакральный символ («цвет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 692, + word: "трудно", + partOfSpeech: "наречие", + frequency: 163.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («трудно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 693, + word: "летопись", + partOfSpeech: "существительное", + frequency: 162.0, + category: "Образ / Архетип", + description: "Скрижали судьбы, память времени, фиксация уроков. Указывает на кармические связи, непрерывность пути и мудрость прошлого.", + ), + WordItem( + id: 694, + word: "руководитель", + partOfSpeech: "существительное", + frequency: 162.0, + category: "Образ / Архетип", + description: "Сакральный символ («руководитель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 695, + word: "специалист", + partOfSpeech: "существительное", + frequency: 161.9, + category: "Образ / Архетип", + description: "Сакральный символ («специалист»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 696, + word: "возможно", + partOfSpeech: "наречие", + frequency: 161.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («возможно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 697, + word: "детский", + partOfSpeech: "прилагательное", + frequency: 161.8, + category: "Свойство / Качество", + description: "Качество энергии («детский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 698, + word: "точно", + partOfSpeech: "наречие", + frequency: 161.7, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («точно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 699, + word: "объяснить", + partOfSpeech: "глагол", + frequency: 161.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («объяснить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 700, + word: "оценка", + partOfSpeech: "существительное", + frequency: 161.4, + category: "Образ / Архетип", + description: "Сакральный символ («оценка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 701, + word: "единый", + partOfSpeech: "прилагательное", + frequency: 161.3, + category: "Свойство / Качество", + description: "Качество энергии («единый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 702, + word: "снять", + partOfSpeech: "глагол", + frequency: 161.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («снять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 703, + word: "определенный", + partOfSpeech: "прилагательное", + frequency: 161.2, + category: "Свойство / Качество", + description: "Качество энергии («определенный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 704, + word: "низкий", + partOfSpeech: "прилагательное", + frequency: 160.7, + category: "Свойство / Качество", + description: "Качество энергии («низкий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 705, + word: "нравиться", + partOfSpeech: "глагол", + frequency: 160.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («нравиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 706, + word: "услышать", + partOfSpeech: "глагол", + frequency: 160.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («услышать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 707, + word: "регион", + partOfSpeech: "существительное", + frequency: 160.3, + category: "Образ / Архетип", + description: "Сакральный символ («регион»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 708, + word: "связать", + partOfSpeech: "глагол", + frequency: 160.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («связать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 709, + word: "песня", + partOfSpeech: "существительное", + frequency: 160.1, + category: "Образ / Архетип", + description: "Сакральный символ («песня»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 710, + word: "родитель", + partOfSpeech: "существительное", + frequency: 160.0, + category: "Образ / Архетип", + description: "Сакральный символ («родитель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 711, + word: "позволить", + partOfSpeech: "глагол", + frequency: 159.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («позволить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 712, + word: "чужой", + partOfSpeech: "прилагательное", + frequency: 159.6, + category: "Свойство / Качество", + description: "Качество энергии («чужой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 713, + word: "море", + partOfSpeech: "существительное", + frequency: 159.5, + category: "Образ / Архетип", + description: "Бездна возможностей, первозданный хаос, океан мудрости и таинственная глубина.", + ), + WordItem( + id: 714, + word: "странный", + partOfSpeech: "прилагательное", + frequency: 159.5, + category: "Свойство / Качество", + description: "Качество энергии («странный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 715, + word: "требование", + partOfSpeech: "существительное", + frequency: 159.4, + category: "Образ / Архетип", + description: "Сакральный символ («требование»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 716, + word: "чистый", + partOfSpeech: "прилагательное", + frequency: 159.0, + category: "Свойство / Качество", + description: "Качество энергии («чистый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 717, + word: "весьма", + partOfSpeech: "наречие", + frequency: 158.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («весьма»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 718, + word: "какой-нибудь", + partOfSpeech: "местоименное прил.", + frequency: 158.8, + category: "Определение", + description: "Фокус осознания («какой-нибудь»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 719, + word: "основание", + partOfSpeech: "существительное", + frequency: 158.8, + category: "Образ / Архетип", + description: "Сакральный символ («основание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 720, + word: "половина", + partOfSpeech: "существительное", + frequency: 158.8, + category: "Образ / Архетип", + description: "Сакральный символ («половина»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 721, + word: "поехать", + partOfSpeech: "глагол", + frequency: 158.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («поехать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 722, + word: "положить", + partOfSpeech: "глагол", + frequency: 158.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («положить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 723, + word: "входить", + partOfSpeech: "глагол", + frequency: 157.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («входить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 724, + word: "легко", + partOfSpeech: "наречие", + frequency: 157.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («легко»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 725, + word: "поздний", + partOfSpeech: "прилагательное", + frequency: 157.7, + category: "Свойство / Качество", + description: "Качество энергии («поздний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 726, + word: "роман", + partOfSpeech: "существительное", + frequency: 157.7, + category: "Образ / Архетип", + description: "Сакральный символ («роман»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 727, + word: "круг", + partOfSpeech: "существительное", + frequency: 157.4, + category: "Образ / Архетип", + description: "Сакральный символ («круг»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 728, + word: "анализ", + partOfSpeech: "существительное", + frequency: 157.0, + category: "Образ / Архетип", + description: "Сакральный символ («анализ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 729, + word: "стихи", + partOfSpeech: "существительное", + frequency: 157.0, + category: "Образ / Архетип", + description: "Сакральный символ («стихи»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 730, + word: "автомобиль", + partOfSpeech: "существительное", + frequency: 156.9, + category: "Образ / Архетип", + description: "Сакральный символ («автомобиль»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 731, + word: "специальный", + partOfSpeech: "прилагательное", + frequency: 156.8, + category: "Свойство / Качество", + description: "Качество энергии («специальный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 732, + word: "экономика", + partOfSpeech: "существительное", + frequency: 156.3, + category: "Образ / Архетип", + description: "Сакральный символ («экономика»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 733, + word: "литература", + partOfSpeech: "существительное", + frequency: 156.0, + category: "Образ / Архетип", + description: "Сакральный символ («литература»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 734, + word: "бумага", + partOfSpeech: "существительное", + frequency: 155.8, + category: "Образ / Архетип", + description: "Сакральный символ («бумага»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 735, + word: "вместо", + partOfSpeech: "предлог", + frequency: 155.7, + category: "Связь / Направление", + description: "Вектор связи («вместо»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 736, + word: "впервые", + partOfSpeech: "наречие", + frequency: 155.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («впервые»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 737, + word: "видно", + partOfSpeech: "наречие", + frequency: 155.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («видно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 738, + word: "научный", + partOfSpeech: "прилагательное", + frequency: 155.1, + category: "Свойство / Качество", + description: "Качество энергии («научный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 739, + word: "оказываться", + partOfSpeech: "глагол", + frequency: 155.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («оказываться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 740, + word: "поэт", + partOfSpeech: "существительное", + frequency: 155.1, + category: "Образ / Архетип", + description: "Сакральный символ («поэт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 741, + word: "показывать", + partOfSpeech: "глагол", + frequency: 155.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («показывать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 742, + word: "степень", + partOfSpeech: "существительное", + frequency: 155.0, + category: "Образ / Архетип", + description: "Сакральный символ («степень»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 743, + word: "вызвать", + partOfSpeech: "глагол", + frequency: 154.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («вызвать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 744, + word: "касаться", + partOfSpeech: "глагол", + frequency: 154.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («касаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 745, + word: "господин", + partOfSpeech: "существительное", + frequency: 154.6, + category: "Образ / Архетип", + description: "Сакральный символ («господин»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 746, + word: "надежда", + partOfSpeech: "существительное", + frequency: 154.5, + category: "Образ / Архетип", + description: "Сакральный символ («надежда»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 747, + word: "сложный", + partOfSpeech: "прилагательное", + frequency: 154.5, + category: "Свойство / Качество", + description: "Качество энергии («сложный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 748, + word: "борис", + partOfSpeech: "s.PROP", + frequency: 154.4, + category: "Сакральный символ", + description: "Символический ключ («борис»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 749, + word: "вокруг", + partOfSpeech: "предлог", + frequency: 154.4, + category: "Связь / Направление", + description: "Вектор связи («вокруг»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 750, + word: "предмет", + partOfSpeech: "существительное", + frequency: 154.4, + category: "Образ / Архетип", + description: "Сакральный символ («предмет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 751, + word: "отметить", + partOfSpeech: "глагол", + frequency: 154.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («отметить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 752, + word: "заявить", + partOfSpeech: "глагол", + frequency: 154.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («заявить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 753, + word: "вариант", + partOfSpeech: "существительное", + frequency: 154.1, + category: "Образ / Архетип", + description: "Сакральный символ («вариант»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 754, + word: "министр", + partOfSpeech: "существительное", + frequency: 154.1, + category: "Образ / Архетип", + description: "Сакральный символ («министр»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 755, + word: "откуда", + partOfSpeech: "наречие-местоимение", + frequency: 154.0, + category: "Направление", + description: "Модус судьбы («откуда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 756, + word: "реальный", + partOfSpeech: "прилагательное", + frequency: 153.8, + category: "Свойство / Качество", + description: "Качество энергии («реальный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 757, + word: "граница", + partOfSpeech: "существительное", + frequency: 153.7, + category: "Образ / Архетип", + description: "Сакральный символ («граница»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 758, + word: "действовать", + partOfSpeech: "глагол", + frequency: 153.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («действовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 759, + word: "дух", + partOfSpeech: "существительное", + frequency: 153.5, + category: "Образ / Архетип", + description: "Сакральный символ («дух»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 760, + word: "модель", + partOfSpeech: "существительное", + frequency: 153.5, + category: "Образ / Архетип", + description: "Сакральный символ («модель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 761, + word: "операция", + partOfSpeech: "существительное", + frequency: 153.3, + category: "Образ / Архетип", + description: "Сакральный символ («операция»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 762, + word: "пара", + partOfSpeech: "существительное", + frequency: 152.7, + category: "Образ / Архетип", + description: "Сакральный символ («пара»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 763, + word: "сон", + partOfSpeech: "существительное", + frequency: 152.7, + category: "Образ / Архетип", + description: "Послание бессознательного, предвидение, состояние растворения иллюзий плотного мира.", + ), + WordItem( + id: 764, + word: "немного", + partOfSpeech: "наречие", + frequency: 151.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («немного»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 765, + word: "название", + partOfSpeech: "существительное", + frequency: 151.8, + category: "Образ / Архетип", + description: "Сакральный символ («название»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 766, + word: "ум", + partOfSpeech: "существительное", + frequency: 151.5, + category: "Образ / Архетип", + description: "Сакральный символ («ум»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 767, + word: "повод", + partOfSpeech: "существительное", + frequency: 151.2, + category: "Образ / Архетип", + description: "Сакральный символ («повод»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 768, + word: "старик", + partOfSpeech: "существительное", + frequency: 151.0, + category: "Образ / Архетип", + description: "Мудрость завершения, совет предков, угасание формы и торжество понимания.", + ), + WordItem( + id: 769, + word: "способный", + partOfSpeech: "прилагательное", + frequency: 150.5, + category: "Свойство / Качество", + description: "Качество энергии («способный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 770, + word: "мало", + partOfSpeech: "числительное", + frequency: 150.4, + category: "Числовой код", + description: "Числовой код («мало»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 771, + word: "миллион", + partOfSpeech: "существительное", + frequency: 150.4, + category: "Образ / Архетип", + description: "Сакральный символ («миллион»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 772, + word: "малый", + partOfSpeech: "прилагательное", + frequency: 150.2, + category: "Свойство / Качество", + description: "Качество энергии («малый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 773, + word: "старший", + partOfSpeech: "прилагательное", + frequency: 149.5, + category: "Свойство / Качество", + description: "Качество энергии («старший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 774, + word: "успех", + partOfSpeech: "существительное", + frequency: 149.5, + category: "Образ / Архетип", + description: "Сакральный символ («успех»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 775, + word: "практически", + partOfSpeech: "наречие", + frequency: 149.4, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («практически»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 776, + word: "получиться", + partOfSpeech: "глагол", + frequency: 149.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («получиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 777, + word: "личный", + partOfSpeech: "прилагательное", + frequency: 149.2, + category: "Свойство / Качество", + description: "Качество энергии («личный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 778, + word: "счастье", + partOfSpeech: "существительное", + frequency: 149.2, + category: "Образ / Архетип", + description: "Сакральный символ («счастье»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 779, + word: "необходимо", + partOfSpeech: "наречие", + frequency: 149.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («необходимо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 780, + word: "свободный", + partOfSpeech: "прилагательное", + frequency: 149.0, + category: "Свойство / Качество", + description: "Качество энергии («свободный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 781, + word: "ребята", + partOfSpeech: "существительное", + frequency: 148.9, + category: "Образ / Архетип", + description: "Сакральный символ («ребята»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 782, + word: "обычный", + partOfSpeech: "прилагательное", + frequency: 148.7, + category: "Свойство / Качество", + description: "Качество энергии («обычный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 783, + word: "чертог", + partOfSpeech: "существительное", + frequency: 148.5, + category: "Образ / Архетип", + description: "Пространство принятия важных решений, тайный совет. Символизирует внутреннюю зрелость и концентрацию воли.", + ), + WordItem( + id: 784, + word: "прекрасный", + partOfSpeech: "прилагательное", + frequency: 148.4, + category: "Свойство / Качество", + description: "Качество энергии («прекрасный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 785, + word: "ссср", + partOfSpeech: "s.PROP", + frequency: 148.3, + category: "Сакральный символ", + description: "Символический ключ («ссср»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 786, + word: "высший", + partOfSpeech: "прилагательное", + frequency: 147.8, + category: "Свойство / Качество", + description: "Качество энергии («высший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 787, + word: "михаил", + partOfSpeech: "s.PROP", + frequency: 147.4, + category: "Сакральный символ", + description: "Символический ключ («михаил»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 788, + word: "кричать", + partOfSpeech: "глагол", + frequency: 147.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («кричать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 789, + word: "прежде", + partOfSpeech: "предлог", + frequency: 147.3, + category: "Связь / Направление", + description: "Вектор связи («прежде»): пространственно-временная направленность силы между элементами вашей ситуации.", + ), + WordItem( + id: 790, + word: "магазин", + partOfSpeech: "существительное", + frequency: 147.2, + category: "Образ / Архетип", + description: "Сакральный символ («магазин»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 791, + word: "пространство", + partOfSpeech: "существительное", + frequency: 147.2, + category: "Образ / Архетип", + description: "Сакральный символ («пространство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 792, + word: "выход", + partOfSpeech: "существительное", + frequency: 147.0, + category: "Образ / Архетип", + description: "Сакральный символ («выход»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 793, + word: "остановиться", + partOfSpeech: "глагол", + frequency: 147.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («остановиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 794, + word: "удар", + partOfSpeech: "существительное", + frequency: 146.8, + category: "Образ / Архетип", + description: "Сакральный символ («удар»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 795, + word: "база", + partOfSpeech: "существительное", + frequency: 146.7, + category: "Образ / Архетип", + description: "Сакральный символ («база»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 796, + word: "знание", + partOfSpeech: "существительное", + frequency: 146.4, + category: "Образ / Архетип", + description: "Сакральный символ («знание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 797, + word: "текст", + partOfSpeech: "существительное", + frequency: 146.2, + category: "Образ / Архетип", + description: "Сакральный символ («текст»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 798, + word: "сюда", + partOfSpeech: "наречие-местоимение", + frequency: 146.1, + category: "Направление", + description: "Модус судьбы («сюда»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 799, + word: "темный", + partOfSpeech: "прилагательное", + frequency: 146.0, + category: "Свойство / Качество", + description: "Качество энергии («темный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 800, + word: "защита", + partOfSpeech: "существительное", + frequency: 145.9, + category: "Образ / Архетип", + description: "Сакральный символ («защита»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 801, + word: "предлагать", + partOfSpeech: "глагол", + frequency: 145.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («предлагать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 802, + word: "руководство", + partOfSpeech: "существительное", + frequency: 145.7, + category: "Образ / Архетип", + description: "Сакральный символ («руководство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 803, + word: "вовсе", + partOfSpeech: "наречие", + frequency: 145.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вовсе»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 804, + word: "площадь", + partOfSpeech: "существительное", + frequency: 145.2, + category: "Образ / Архетип", + description: "Сакральный символ («площадь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 805, + word: "сознание", + partOfSpeech: "существительное", + frequency: 145.2, + category: "Образ / Архетип", + description: "Сакральный символ («сознание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 806, + word: "гражданский", + partOfSpeech: "прилагательное", + frequency: 144.7, + category: "Свойство / Качество", + description: "Качество энергии («гражданский»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 807, + word: "убить", + partOfSpeech: "глагол", + frequency: 144.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («убить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 808, + word: "возраст", + partOfSpeech: "существительное", + frequency: 144.5, + category: "Образ / Архетип", + description: "Сакральный символ («возраст»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 809, + word: "молчать", + partOfSpeech: "глагол", + frequency: 144.5, + category: "Действие / Трансформация", + description: "Накопление силы, охрана тайны, благоговение перед величием момента.", + ), + WordItem( + id: 810, + word: "согласиться", + partOfSpeech: "глагол", + frequency: 144.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («согласиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 811, + word: "участник", + partOfSpeech: "существительное", + frequency: 144.2, + category: "Образ / Архетип", + description: "Сакральный символ («участник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 812, + word: "участок", + partOfSpeech: "существительное", + frequency: 144.2, + category: "Образ / Архетип", + description: "Сакральный символ («участок»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 813, + word: "рано", + partOfSpeech: "наречие", + frequency: 144.1, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («рано»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 814, + word: "пункт", + partOfSpeech: "существительное", + frequency: 144.0, + category: "Образ / Архетип", + description: "Сакральный символ («пункт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 815, + word: "несмотря", + partOfSpeech: "наречие", + frequency: 143.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («несмотря»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 816, + word: "сильно", + partOfSpeech: "наречие", + frequency: 143.9, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («сильно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 817, + word: "столь", + partOfSpeech: "наречие-местоимение", + frequency: 143.9, + category: "Направление", + description: "Модус судьбы («столь»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 818, + word: "сообщить", + partOfSpeech: "глагол", + frequency: 143.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («сообщить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 819, + word: "линия", + partOfSpeech: "существительное", + frequency: 143.7, + category: "Образ / Архетип", + description: "Сакральный символ («линия»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 820, + word: "бежать", + partOfSpeech: "глагол", + frequency: 143.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («бежать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 821, + word: "желание", + partOfSpeech: "существительное", + frequency: 143.6, + category: "Образ / Архетип", + description: "Сакральный символ («желание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 822, + word: "кажется", + partOfSpeech: "наречие", + frequency: 143.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («кажется»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 823, + word: "петь", + partOfSpeech: "глагол", + frequency: 143.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («петь»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 824, + word: "доктор", + partOfSpeech: "существительное", + frequency: 143.1, + category: "Образ / Архетип", + description: "Сакральный символ («доктор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 825, + word: "губа", + partOfSpeech: "существительное", + frequency: 143.0, + category: "Образ / Архетип", + description: "Сакральный символ («губа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 826, + word: "известно", + partOfSpeech: "наречие", + frequency: 143.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («известно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 827, + word: "дома", + partOfSpeech: "наречие", + frequency: 142.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («дома»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 828, + word: "вызывать", + partOfSpeech: "глагол", + frequency: 142.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («вызывать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 829, + word: "дочь", + partOfSpeech: "существительное", + frequency: 142.4, + category: "Образ / Архетип", + description: "Сакральный символ («дочь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 830, + word: "показаться", + partOfSpeech: "глагол", + frequency: 142.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («показаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 831, + word: "среда", + partOfSpeech: "существительное", + frequency: 142.4, + category: "Образ / Архетип", + description: "Сакральный символ («среда»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 832, + word: "председатель", + partOfSpeech: "существительное", + frequency: 142.3, + category: "Образ / Архетип", + description: "Сакральный символ («председатель»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 833, + word: "представление", + partOfSpeech: "существительное", + frequency: 142.2, + category: "Образ / Архетип", + description: "Сакральный символ («представление»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 834, + word: "солдат", + partOfSpeech: "существительное", + frequency: 142.2, + category: "Образ / Архетип", + description: "Сакральный символ («солдат»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 835, + word: "художник", + partOfSpeech: "существительное", + frequency: 142.2, + category: "Образ / Архетип", + description: "Сакральный символ («художник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 836, + word: "принести", + partOfSpeech: "глагол", + frequency: 141.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («принести»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 837, + word: "волос", + partOfSpeech: "существительное", + frequency: 141.8, + category: "Образ / Архетип", + description: "Сакральный символ («волос»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 838, + word: "оружие", + partOfSpeech: "существительное", + frequency: 141.8, + category: "Образ / Архетип", + description: "Сакральный символ («оружие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 839, + word: "выглядеть", + partOfSpeech: "глагол", + frequency: 141.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («выглядеть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 840, + word: "соответствие", + partOfSpeech: "существительное", + frequency: 141.0, + category: "Образ / Архетип", + description: "Сакральный символ («соответствие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 841, + word: "никак", + partOfSpeech: "наречие-местоимение", + frequency: 140.5, + category: "Направление", + description: "Модус судьбы («никак»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 842, + word: "ветер", + partOfSpeech: "существительное", + frequency: 140.3, + category: "Образ / Архетип", + description: "Неуловимые перемены, дыхание духа, освобождение от застоя и свежие веяния.", + ), + WordItem( + id: 843, + word: "внешний", + partOfSpeech: "прилагательное", + frequency: 140.3, + category: "Свойство / Качество", + description: "Качество энергии («внешний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 844, + word: "парень", + partOfSpeech: "существительное", + frequency: 140.3, + category: "Образ / Архетип", + description: "Сакральный символ («парень»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 845, + word: "служить", + partOfSpeech: "глагол", + frequency: 140.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («служить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 846, + word: "зрение", + partOfSpeech: "существительное", + frequency: 140.2, + category: "Образ / Архетип", + description: "Сакральный символ («зрение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 847, + word: "попросить", + partOfSpeech: "глагол", + frequency: 140.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («попросить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 848, + word: "генерал", + partOfSpeech: "существительное", + frequency: 140.0, + category: "Образ / Архетип", + description: "Сакральный символ («генерал»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 849, + word: "состоять", + partOfSpeech: "глагол", + frequency: 139.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («состоять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 850, + word: "огонь", + partOfSpeech: "существительное", + frequency: 139.8, + category: "Образ / Архетип", + description: "Очищающее пламя, страсть, трансформация, разрушение иллюзий и горение духа.", + ), + WordItem( + id: 851, + word: "отдать", + partOfSpeech: "глагол", + frequency: 139.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («отдать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 852, + word: "боевой", + partOfSpeech: "прилагательное", + frequency: 139.6, + category: "Свойство / Качество", + description: "Качество энергии («боевой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 853, + word: "понятие", + partOfSpeech: "существительное", + frequency: 139.4, + category: "Образ / Архетип", + description: "Сакральный символ («понятие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 854, + word: "строительство", + partOfSpeech: "существительное", + frequency: 139.4, + category: "Образ / Архетип", + description: "Сакральный символ («строительство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 855, + word: "ухо", + partOfSpeech: "существительное", + frequency: 139.3, + category: "Образ / Архетип", + description: "Сакральный символ («ухо»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 856, + word: "европа", + partOfSpeech: "s.PROP", + frequency: 139.2, + category: "Сакральный символ", + description: "Символический ключ («европа»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 857, + word: "выступать", + partOfSpeech: "глагол", + frequency: 138.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («выступать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 858, + word: "грудь", + partOfSpeech: "существительное", + frequency: 138.8, + category: "Образ / Архетип", + description: "Сакральный символ («грудь»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 859, + word: "нос", + partOfSpeech: "существительное", + frequency: 138.8, + category: "Образ / Архетип", + description: "Сакральный символ («нос»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 860, + word: "ставить", + partOfSpeech: "глагол", + frequency: 138.7, + category: "Действие / Трансформация", + description: "Вектор трансформации («ставить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 861, + word: "завтра", + partOfSpeech: "наречие", + frequency: 138.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («завтра»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 862, + word: "возникать", + partOfSpeech: "глагол", + frequency: 138.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («возникать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 863, + word: "страх", + partOfSpeech: "существительное", + frequency: 138.4, + category: "Образ / Архетип", + description: "Сакральный символ («страх»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 864, + word: "услуга", + partOfSpeech: "существительное", + frequency: 138.3, + category: "Образ / Архетип", + description: "Сакральный символ («услуга»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 865, + word: "рабочий", + partOfSpeech: "прилагательное", + frequency: 138.0, + category: "Свойство / Качество", + description: "Качество энергии («рабочий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 866, + word: "что-нибудь", + partOfSpeech: "местоимение", + frequency: 137.6, + category: "Фокус сознания", + description: "Фокус осознания («что-нибудь»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 867, + word: "глубокий", + partOfSpeech: "прилагательное", + frequency: 137.3, + category: "Свойство / Качество", + description: "Качество энергии («глубокий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 868, + word: "содержание", + partOfSpeech: "существительное", + frequency: 137.3, + category: "Образ / Архетип", + description: "Сакральный символ («содержание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 869, + word: "радость", + partOfSpeech: "существительное", + frequency: 137.2, + category: "Образ / Архетип", + description: "Сакральный символ («радость»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 870, + word: "безопасность", + partOfSpeech: "существительное", + frequency: 137.1, + category: "Образ / Архетип", + description: "Сакральный символ («безопасность»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 871, + word: "надеяться", + partOfSpeech: "глагол", + frequency: 137.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («надеяться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 872, + word: "продукт", + partOfSpeech: "существительное", + frequency: 136.7, + category: "Образ / Архетип", + description: "Сакральный символ («продукт»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 873, + word: "видимо", + partOfSpeech: "наречие", + frequency: 136.4, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («видимо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 874, + word: "комплекс", + partOfSpeech: "существительное", + frequency: 136.3, + category: "Образ / Архетип", + description: "Сакральный символ («комплекс»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 875, + word: "бизнес", + partOfSpeech: "существительное", + frequency: 136.2, + category: "Образ / Архетип", + description: "Сакральный символ («бизнес»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 876, + word: "подняться", + partOfSpeech: "глагол", + frequency: 136.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («подняться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 877, + word: "вспоминать", + partOfSpeech: "глагол", + frequency: 135.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («вспоминать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 878, + word: "иванович", + partOfSpeech: "s.PROP", + frequency: 135.9, + category: "Сакральный символ", + description: "Символический ключ («иванович»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 879, + word: "сад", + partOfSpeech: "существительное", + frequency: 135.8, + category: "Образ / Архетип", + description: "Сакральный символ («сад»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 880, + word: "долгий", + partOfSpeech: "прилагательное", + frequency: 135.5, + category: "Свойство / Качество", + description: "Качество энергии («долгий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 881, + word: "одновременно", + partOfSpeech: "наречие", + frequency: 135.4, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («одновременно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 882, + word: "называться", + partOfSpeech: "глагол", + frequency: 135.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («называться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 883, + word: "сотрудник", + partOfSpeech: "существительное", + frequency: 135.1, + category: "Образ / Архетип", + description: "Сакральный символ («сотрудник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 884, + word: "лето", + partOfSpeech: "существительное", + frequency: 135.0, + category: "Образ / Архетип", + description: "Сакральный символ («лето»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 885, + word: "тихо", + partOfSpeech: "наречие", + frequency: 135.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («тихо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 886, + word: "зато", + partOfSpeech: "союз", + frequency: 134.9, + category: "Узел / Отношение", + description: "Узел отношений («зато»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 887, + word: "прямой", + partOfSpeech: "прилагательное", + frequency: 134.8, + category: "Свойство / Качество", + description: "Качество энергии («прямой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 888, + word: "курс", + partOfSpeech: "существительное", + frequency: 134.5, + category: "Образ / Архетип", + description: "Сакральный символ («курс»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 889, + word: "помогать", + partOfSpeech: "глагол", + frequency: 134.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («помогать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 890, + word: "предложение", + partOfSpeech: "существительное", + frequency: 134.5, + category: "Образ / Архетип", + description: "Сакральный символ («предложение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 891, + word: "финансовый", + partOfSpeech: "прилагательное", + frequency: 134.5, + category: "Свойство / Качество", + description: "Качество энергии («финансовый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 892, + word: "открытый", + partOfSpeech: "прилагательное", + frequency: 134.4, + category: "Свойство / Качество", + description: "Качество энергии («открытый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 893, + word: "почему-то", + partOfSpeech: "наречие-местоимение", + frequency: 134.4, + category: "Направление", + description: "Модус судьбы («почему-то»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 894, + word: "значить", + partOfSpeech: "глагол", + frequency: 134.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («значить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 895, + word: "возникнуть", + partOfSpeech: "глагол", + frequency: 133.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («возникнуть»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 896, + word: "рот", + partOfSpeech: "существительное", + frequency: 133.6, + category: "Образ / Архетип", + description: "Сакральный символ («рот»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 897, + word: "где-то", + partOfSpeech: "наречие-местоимение", + frequency: 133.5, + category: "Направление", + description: "Модус судьбы («где-то»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 898, + word: "технология", + partOfSpeech: "существительное", + frequency: 133.5, + category: "Образ / Архетип", + description: "Сакральный символ («технология»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 899, + word: "знакомый", + partOfSpeech: "прилагательное", + frequency: 133.4, + category: "Свойство / Качество", + description: "Качество энергии («знакомый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 900, + word: "недавно", + partOfSpeech: "наречие", + frequency: 133.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («недавно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 901, + word: "реформа", + partOfSpeech: "существительное", + frequency: 133.1, + category: "Образ / Архетип", + description: "Сакральный символ («реформа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 902, + word: "отсутствие", + partOfSpeech: "существительное", + frequency: 132.4, + category: "Образ / Архетип", + description: "Сакральный символ («отсутствие»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 903, + word: "нынешний", + partOfSpeech: "прилагательное", + frequency: 132.3, + category: "Свойство / Качество", + description: "Качество энергии («нынешний»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 904, + word: "собака", + partOfSpeech: "существительное", + frequency: 132.2, + category: "Образ / Архетип", + description: "Сакральный символ («собака»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 905, + word: "камень", + partOfSpeech: "существительное", + frequency: 131.9, + category: "Образ / Архетип", + description: "Незыблемость, прочность, фундамент, но и предупреждение о косности и закостенелости.", + ), + WordItem( + id: 906, + word: "будущее", + partOfSpeech: "существительное", + frequency: 131.4, + category: "Образ / Архетип", + description: "Сакральный символ («будущее»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 907, + word: "звать", + partOfSpeech: "глагол", + frequency: 131.3, + category: "Действие / Трансформация", + description: "Вектор трансформации («звать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 908, + word: "рассказ", + partOfSpeech: "существительное", + frequency: 131.3, + category: "Образ / Архетип", + description: "Сакральный символ («рассказ»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 909, + word: "контроль", + partOfSpeech: "существительное", + frequency: 131.2, + category: "Образ / Архетип", + description: "Сакральный символ («контроль»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 910, + word: "позвонить", + partOfSpeech: "глагол", + frequency: 131.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («позвонить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 911, + word: "река", + partOfSpeech: "существительное", + frequency: 131.0, + category: "Образ / Архетип", + description: "Непрерывное течение событий, принятие перемен, доверие потоку жизни.", + ), + WordItem( + id: 912, + word: "хватать", + partOfSpeech: "глагол", + frequency: 130.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («хватать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 913, + word: "продукция", + partOfSpeech: "существительное", + frequency: 130.8, + category: "Образ / Архетип", + description: "Сакральный символ («продукция»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 914, + word: "сумма", + partOfSpeech: "существительное", + frequency: 130.6, + category: "Образ / Архетип", + description: "Сакральный символ («сумма»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 915, + word: "техника", + partOfSpeech: "существительное", + frequency: 130.5, + category: "Образ / Архетип", + description: "Сакральный символ («техника»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 916, + word: "исторический", + partOfSpeech: "прилагательное", + frequency: 130.4, + category: "Свойство / Качество", + description: "Качество энергии («исторический»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 917, + word: "вновь", + partOfSpeech: "наречие", + frequency: 130.3, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вновь»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 918, + word: "народный", + partOfSpeech: "прилагательное", + frequency: 130.3, + category: "Свойство / Качество", + description: "Качество энергии («народный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 919, + word: "прямо", + partOfSpeech: "частица", + frequency: 130.3, + category: "Импульс / Оттенок", + description: "Импульс модальности («прямо»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания.", + ), + WordItem( + id: 920, + word: "ибо", + partOfSpeech: "союз", + frequency: 130.0, + category: "Узел / Отношение", + description: "Узел отношений («ибо»): принцип соединения явлений, показывающий характер перехода между причиной и следствием.", + ), + WordItem( + id: 921, + word: "выпить", + partOfSpeech: "глагол", + frequency: 129.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («выпить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 922, + word: "здание", + partOfSpeech: "существительное", + frequency: 129.9, + category: "Образ / Архетип", + description: "Сакральный символ («здание»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 923, + word: "сфера", + partOfSpeech: "существительное", + frequency: 129.5, + category: "Образ / Архетип", + description: "Сакральный символ («сфера»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 924, + word: "знаменитый", + partOfSpeech: "прилагательное", + frequency: 129.4, + category: "Свойство / Качество", + description: "Качество энергии («знаменитый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 925, + word: "иначе", + partOfSpeech: "наречие-местоимение", + frequency: 129.2, + category: "Направление", + description: "Модус судьбы («иначе»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 926, + word: "потерять", + partOfSpeech: "глагол", + frequency: 129.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («потерять»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 927, + word: "необходимость", + partOfSpeech: "существительное", + frequency: 129.1, + category: "Образ / Архетип", + description: "Сакральный символ («необходимость»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 928, + word: "больший", + partOfSpeech: "прилагательное", + frequency: 128.9, + category: "Свойство / Качество", + description: "Качество энергии («больший»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 929, + word: "фонд", + partOfSpeech: "существительное", + frequency: 128.6, + category: "Образ / Архетип", + description: "Сакральный символ («фонд»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 930, + word: "иметься", + partOfSpeech: "глагол", + frequency: 128.4, + category: "Действие / Трансформация", + description: "Вектор трансформации («иметься»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 931, + word: "вперед", + partOfSpeech: "наречие", + frequency: 128.1, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вперед»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 932, + word: "подготовка", + partOfSpeech: "существительное", + frequency: 127.9, + category: "Образ / Архетип", + description: "Сакральный символ («подготовка»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 933, + word: "вчера", + partOfSpeech: "наречие", + frequency: 127.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («вчера»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 934, + word: "лист", + partOfSpeech: "существительное", + frequency: 127.6, + category: "Образ / Архетип", + description: "Сакральный символ («лист»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 935, + word: "пустой", + partOfSpeech: "прилагательное", + frequency: 127.5, + category: "Свойство / Качество", + description: "Качество энергии («пустой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 936, + word: "очередной", + partOfSpeech: "прилагательное", + frequency: 127.4, + category: "Свойство / Качество", + description: "Качество энергии («очередной»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 937, + word: "республика", + partOfSpeech: "существительное", + frequency: 127.4, + category: "Образ / Архетип", + description: "Сакральный символ («республика»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 938, + word: "хозяйство", + partOfSpeech: "существительное", + frequency: 127.2, + category: "Образ / Архетип", + description: "Сакральный символ («хозяйство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 939, + word: "виктор", + partOfSpeech: "s.PROP", + frequency: 127.1, + category: "Сакральный символ", + description: "Символический ключ («виктор»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 940, + word: "полностью", + partOfSpeech: "наречие", + frequency: 127.0, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («полностью»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 941, + word: "получаться", + partOfSpeech: "глагол", + frequency: 127.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («получаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 942, + word: "учиться", + partOfSpeech: "глагол", + frequency: 126.9, + category: "Действие / Трансформация", + description: "Вектор трансформации («учиться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 943, + word: "плохо", + partOfSpeech: "наречие", + frequency: 126.5, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («плохо»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 944, + word: "воля", + partOfSpeech: "существительное", + frequency: 126.4, + category: "Образ / Архетип", + description: "Сакральный символ («воля»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 945, + word: "судебный", + partOfSpeech: "прилагательное", + frequency: 126.1, + category: "Свойство / Качество", + description: "Качество энергии («судебный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 946, + word: "бюджет", + partOfSpeech: "существительное", + frequency: 126.0, + category: "Образ / Архетип", + description: "Сакральный символ («бюджет»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 947, + word: "возвращаться", + partOfSpeech: "глагол", + frequency: 125.8, + category: "Действие / Трансформация", + description: "Вектор трансформации («возвращаться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 948, + word: "расти", + partOfSpeech: "глагол", + frequency: 125.8, + category: "Действие / Трансформация", + description: "Органическое расширение сознания, преодоление ограничений, тяга к Свету.", + ), + WordItem( + id: 949, + word: "снег", + partOfSpeech: "существительное", + frequency: 125.2, + category: "Образ / Архетип", + description: "Сакральный символ («снег»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 950, + word: "деревня", + partOfSpeech: "существительное", + frequency: 125.1, + category: "Образ / Архетип", + description: "Сакральный символ («деревня»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 951, + word: "обнаружить", + partOfSpeech: "глагол", + frequency: 125.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («обнаружить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 952, + word: "мужик", + partOfSpeech: "существительное", + frequency: 124.7, + category: "Образ / Архетип", + description: "Сакральный символ («мужик»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 953, + word: "постоянно", + partOfSpeech: "наречие", + frequency: 124.6, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («постоянно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 954, + word: "зеленый", + partOfSpeech: "прилагательное", + frequency: 124.4, + category: "Свойство / Качество", + description: "Качество энергии («зеленый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 955, + word: "элемент", + partOfSpeech: "существительное", + frequency: 124.4, + category: "Образ / Архетип", + description: "Сакральный символ («элемент»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 956, + word: "обстоятельство", + partOfSpeech: "существительное", + frequency: 124.2, + category: "Образ / Архетип", + description: "Сакральный символ («обстоятельство»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 957, + word: "почувствовать", + partOfSpeech: "глагол", + frequency: 124.2, + category: "Действие / Трансформация", + description: "Вектор трансформации («почувствовать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 958, + word: "иностранец", + partOfSpeech: "существительное", + frequency: 124.1, + category: "Образ / Архетип", + description: "Встреча с Неведомым, выход за рамки привычного мира. Символизирует чужеродный взгляд, послание издалека или необходимость адаптации.", + ), + WordItem( + id: 959, + word: "многое", + partOfSpeech: "местоимение", + frequency: 124.0, + category: "Фокус сознания", + description: "Фокус осознания («многое»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 960, + word: "победа", + partOfSpeech: "существительное", + frequency: 124.0, + category: "Образ / Архетип", + description: "Сакральный символ («победа»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 961, + word: "источник", + partOfSpeech: "существительное", + frequency: 123.7, + category: "Образ / Архетип", + description: "Сакральный символ («источник»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 962, + word: "немецкий", + partOfSpeech: "прилагательное", + frequency: 123.6, + category: "Свойство / Качество", + description: "Качество энергии («немецкий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 963, + word: "золотой", + partOfSpeech: "прилагательное", + frequency: 123.5, + category: "Свойство / Качество", + description: "Качество энергии («золотой»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 964, + word: "передать", + partOfSpeech: "глагол", + frequency: 123.5, + category: "Действие / Трансформация", + description: "Вектор трансформации («передать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 965, + word: "технический", + partOfSpeech: "прилагательное", + frequency: 123.4, + category: "Свойство / Качество", + description: "Качество энергии («технический»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 966, + word: "нормальный", + partOfSpeech: "прилагательное", + frequency: 123.2, + category: "Свойство / Качество", + description: "Качество энергии («нормальный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 967, + word: "едва", + partOfSpeech: "наречие", + frequency: 123.1, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («едва»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 968, + word: "желать", + partOfSpeech: "глагол", + frequency: 123.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («желать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 969, + word: "ожидать", + partOfSpeech: "глагол", + frequency: 123.0, + category: "Действие / Трансформация", + description: "Вектор трансформации («ожидать»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 970, + word: "некий", + partOfSpeech: "местоименное прил.", + frequency: 122.8, + category: "Определение", + description: "Фокус осознания («некий»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада.", + ), + WordItem( + id: 971, + word: "звезда", + partOfSpeech: "существительное", + frequency: 122.7, + category: "Образ / Архетип", + description: "Путеводный ориентир, надежда, высшая цель, связь с вечностью и вера в невозможное.", + ), + WordItem( + id: 972, + word: "городской", + partOfSpeech: "прилагательное", + frequency: 122.4, + category: "Свойство / Качество", + description: "Качество энергии («городской»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 973, + word: "выбор", + partOfSpeech: "существительное", + frequency: 122.0, + category: "Образ / Архетип", + description: "Сакральный символ («выбор»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 974, + word: "америка", + partOfSpeech: "s.PROP", + frequency: 121.9, + category: "Сакральный символ", + description: "Символический ключ («америка»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 975, + word: "соответствующий", + partOfSpeech: "прилагательное", + frequency: 121.8, + category: "Свойство / Качество", + description: "Качество энергии («соответствующий»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 976, + word: "масса", + partOfSpeech: "существительное", + frequency: 121.7, + category: "Образ / Архетип", + description: "Сакральный символ («масса»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 977, + word: "составить", + partOfSpeech: "глагол", + frequency: 121.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («составить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 978, + word: "итог", + partOfSpeech: "существительное", + frequency: 121.5, + category: "Образ / Архетип", + description: "Сакральный символ («итог»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 979, + word: "сестра", + partOfSpeech: "существительное", + frequency: 121.3, + category: "Образ / Архетип", + description: "Сакральный символ («сестра»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 980, + word: "игорь", + partOfSpeech: "s.PROP", + frequency: 120.9, + category: "Сакральный символ", + description: "Символический ключ («игорь»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления.", + ), + WordItem( + id: 981, + word: "шесть", + partOfSpeech: "числительное", + frequency: 120.9, + category: "Числовой код", + description: "Числовой код («шесть»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 982, + word: "ясно", + partOfSpeech: "наречие", + frequency: 120.8, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («ясно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 983, + word: "практика", + partOfSpeech: "существительное", + frequency: 120.7, + category: "Образ / Архетип", + description: "Сакральный символ («практика»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 984, + word: "сто", + partOfSpeech: "числительное", + frequency: 120.7, + category: "Числовой код", + description: "Числовой код («сто»): сакральная мера количества, циклов или порядка проявления событий.", + ), + WordItem( + id: 985, + word: "нести", + partOfSpeech: "глагол", + frequency: 120.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («нести»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 986, + word: "определить", + partOfSpeech: "глагол", + frequency: 120.6, + category: "Действие / Трансформация", + description: "Вектор трансформации («определить»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 987, + word: "проведение", + partOfSpeech: "существительное", + frequency: 120.6, + category: "Образ / Архетип", + description: "Сакральный символ («проведение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 988, + word: "карман", + partOfSpeech: "существительное", + frequency: 120.5, + category: "Образ / Архетип", + description: "Сакральный символ («карман»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 989, + word: "любимый", + partOfSpeech: "прилагательное", + frequency: 120.4, + category: "Свойство / Качество", + description: "Качество энергии («любимый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 990, + word: "родной", + partOfSpeech: "прилагательное", + frequency: 120.3, + category: "Свойство / Качество", + description: "Качество энергии («родной»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 991, + word: "западный", + partOfSpeech: "прилагательное", + frequency: 120.2, + category: "Свойство / Качество", + description: "Качество энергии («западный»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 992, + word: "обязательно", + partOfSpeech: "наречие", + frequency: 120.2, + category: "Вектор / Обстоятельство", + description: "Модус судьбы («обязательно»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация.", + ), + WordItem( + id: 993, + word: "слава", + partOfSpeech: "существительное", + frequency: 120.2, + category: "Образ / Архетип", + description: "Сакральный символ («слава»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 994, + word: "кухня", + partOfSpeech: "существительное", + frequency: 120.1, + category: "Образ / Архетип", + description: "Сакральный символ («кухня»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 995, + word: "определение", + partOfSpeech: "существительное", + frequency: 120.1, + category: "Образ / Архетип", + description: "Сакральный символ («определение»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 996, + word: "пользоваться", + partOfSpeech: "глагол", + frequency: 120.1, + category: "Действие / Трансформация", + description: "Вектор трансформации («пользоваться»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой.", + ), + WordItem( + id: 997, + word: "быстрый", + partOfSpeech: "прилагательное", + frequency: 119.8, + category: "Свойство / Качество", + description: "Качество энергии («быстрый»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить.", + ), + WordItem( + id: 998, + word: "функция", + partOfSpeech: "существительное", + frequency: 119.6, + category: "Образ / Архетип", + description: "Сакральный символ («функция»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), + WordItem( + id: 999, + word: "войско", + partOfSpeech: "существительное", + frequency: 119.4, + category: "Образ / Архетип", + description: "Сакральный символ («войско»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе.", + ), +]; diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..20a7517 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,138 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'screens/catalog_screen.dart'; +import 'screens/history_screen.dart'; +import 'screens/home_search_screen.dart'; +import 'screens/oracle_spread_screen.dart'; +import 'services/words_repository.dart'; +import 'widgets/gradient_star_badge.dart'; + +void main() async { + WidgetsFlutterBinding.ensureInitialized(); + await WordsRepository().init(); + runApp(const Words999App()); +} + +class Words999App extends StatefulWidget { + const Words999App({super.key}); + + @override + State createState() => _Words999AppState(); +} + +class _Words999AppState extends State { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Оракул 999 Символов', + debugShowCheckedModeBanner: false, + themeMode: ThemeMode.dark, // Default to rich mystical dark mode + darkTheme: ThemeData( + useMaterial3: true, + brightness: Brightness.dark, + scaffoldBackgroundColor: const Color(0xFF0C0E1A), + colorScheme: const ColorScheme.dark( + primary: Color(0xFFFFD54F), // Celestial Yellow Gold + onPrimary: Color(0xFF1B1D30), + primaryContainer: Color(0xFF2A2D4A), + onPrimaryContainer: Color(0xFFFFF9C4), + secondary: Color(0xFF80DEEA), + surface: Color(0xFF151829), + onSurface: Color(0xFFE8EAF6), + surfaceContainerHigh: Color(0xFF1E2238), + surfaceContainerHighest: Color(0xFF262B44), + outline: Color(0xFF9FA8DA), + outlineVariant: Color(0xFF3949AB), + ), + fontFamily: 'Roboto', + appBarTheme: const AppBarTheme( + backgroundColor: Color(0xFF0C0E1A), + elevation: 0, + scrolledUnderElevation: 3, + centerTitle: false, + titleTextStyle: TextStyle( + color: Color(0xFFFFF9C4), + fontSize: 20, + fontWeight: FontWeight.w900, + letterSpacing: 0.5, + ), + ), + navigationBarTheme: NavigationBarThemeData( + backgroundColor: const Color(0xFF101322), + indicatorColor: const Color(0xFF2A2D4A), + labelTextStyle: WidgetStateProperty.resolveWith((states) { + if (states.contains(WidgetState.selected)) { + return const TextStyle( + color: Color(0xFFFFD54F), + fontWeight: FontWeight.bold, + fontSize: 12, + ); + } + return const TextStyle( + color: Color(0xFF9FA8DA), + fontSize: 11, + ); + }), + ), + ), + home: const MainNavigationContainer(), + ); + } +} + +class MainNavigationContainer extends StatefulWidget { + const MainNavigationContainer({super.key}); + + @override + State createState() => _MainNavigationContainerState(); +} + +class _MainNavigationContainerState extends State { + int _currentIndex = 0; + + final List _screens = const [ + HomeSearchScreen(), + OracleSpreadScreen(), + CatalogScreen(), + HistoryScreen(), + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + body: IndexedStack( + index: _currentIndex, + children: _screens, + ), + bottomNavigationBar: NavigationBar( + selectedIndex: _currentIndex, + onDestinationSelected: (index) { + setState(() => _currentIndex = index); + HapticFeedback.selectionClick(); + }, + destinations: const [ + NavigationDestination( + icon: Icon(Icons.dialpad_outlined), + selectedIcon: GradientStar(size: 22), + label: 'Поиск 000..999', + ), + NavigationDestination( + icon: Icon(Icons.auto_awesome_outlined), + selectedIcon: GradientStar(size: 22), + label: 'Расклады', + ), + NavigationDestination( + icon: Icon(Icons.menu_book_outlined), + selectedIcon: GradientStar(size: 22), + label: 'Каталог 999', + ), + NavigationDestination( + icon: Icon(Icons.history_rounded), + selectedIcon: GradientStar(size: 22), + label: 'История', + ), + ], + ), + ); + } +} diff --git a/lib/models/history_entry_model.dart b/lib/models/history_entry_model.dart new file mode 100644 index 0000000..74530d9 --- /dev/null +++ b/lib/models/history_entry_model.dart @@ -0,0 +1,59 @@ +class HistoryEntry { + final String id; + final DateTime timestamp; + final String word; + final int sessionNumber; + final String partOfSpeech; + final String symbolicMeaning; + final String readingType; + final String? positionTitle; + + const HistoryEntry({ + required this.id, + required this.timestamp, + required this.word, + required this.sessionNumber, + required this.partOfSpeech, + required this.symbolicMeaning, + this.readingType = 'Жребий', + this.positionTitle, + }); + + String get formattedSessionNumber => sessionNumber.toString().padLeft(3, '0'); + + String get formattedDate { + final day = timestamp.day.toString().padLeft(2, '0'); + final month = timestamp.month.toString().padLeft(2, '0'); + final year = timestamp.year.toString(); + final hour = timestamp.hour.toString().padLeft(2, '0'); + final minute = timestamp.minute.toString().padLeft(2, '0'); + final second = timestamp.second.toString().padLeft(2, '0'); + return '$day.$month.$year $hour:$minute:$second'; + } + + Map toMap() { + return { + 'id': id, + 'timestamp': timestamp.toIso8601String(), + 'word': word, + 'sessionNumber': sessionNumber, + 'partOfSpeech': partOfSpeech, + 'symbolicMeaning': symbolicMeaning, + 'readingType': readingType, + 'positionTitle': positionTitle, + }; + } + + factory HistoryEntry.fromMap(Map map) { + return HistoryEntry( + id: map['id'] as String? ?? DateTime.now().millisecondsSinceEpoch.toString(), + timestamp: DateTime.tryParse(map['timestamp'] as String? ?? '') ?? DateTime.now(), + word: map['word'] as String? ?? '', + sessionNumber: map['sessionNumber'] as int? ?? 0, + partOfSpeech: map['partOfSpeech'] as String? ?? '', + symbolicMeaning: map['symbolicMeaning'] as String? ?? '', + readingType: map['readingType'] as String? ?? 'Жребий', + positionTitle: map['positionTitle'] as String?, + ); + } +} diff --git a/lib/models/word_model.dart b/lib/models/word_model.dart new file mode 100644 index 0000000..7e061f5 --- /dev/null +++ b/lib/models/word_model.dart @@ -0,0 +1,69 @@ +class WordItem { + final int id; // Base index 0..999 + final int sessionNumber; // Dynamic randomized session number 0..999 + final String word; + final String partOfSpeech; + final double frequency; + final String category; + final String description; + + const WordItem({ + required this.id, + this.sessionNumber = 0, + required this.word, + required this.partOfSpeech, + required this.frequency, + this.category = '', + this.description = '', + }); + + WordItem copyWith({ + int? id, + int? sessionNumber, + String? word, + String? partOfSpeech, + double? frequency, + String? category, + String? description, + }) { + return WordItem( + id: id ?? this.id, + sessionNumber: sessionNumber ?? this.sessionNumber, + word: word ?? this.word, + partOfSpeech: partOfSpeech ?? this.partOfSpeech, + frequency: frequency ?? this.frequency, + category: category ?? this.category, + description: description ?? this.description, + ); + } + + String get formattedSessionNumber => sessionNumber.toString().padLeft(3, '0'); + String get formattedId => formattedSessionNumber; + + Map toMap() { + return { + 'id': id, + 'sessionNumber': sessionNumber, + 'word': word, + 'partOfSpeech': partOfSpeech, + 'frequency': frequency, + 'category': category, + 'description': description, + }; + } + + factory WordItem.fromMap(Map map) { + return WordItem( + id: map['id'] as int, + sessionNumber: map['sessionNumber'] as int? ?? (map['id'] as int), + word: map['word'] as String, + partOfSpeech: map['partOfSpeech'] as String, + frequency: (map['frequency'] as num).toDouble(), + category: map['category'] as String? ?? '', + description: map['description'] as String? ?? '', + ); + } + + @override + String toString() => '#$formattedSessionNumber: $word ($partOfSpeech)'; +} diff --git a/lib/screens/catalog_screen.dart b/lib/screens/catalog_screen.dart new file mode 100644 index 0000000..b6e531e --- /dev/null +++ b/lib/screens/catalog_screen.dart @@ -0,0 +1,313 @@ +import 'package:flutter/material.dart'; +import '../models/word_model.dart'; +import '../services/words_repository.dart'; +import '../widgets/gradient_star_badge.dart'; +import '../widgets/word_card_widget.dart'; + +class CatalogScreen extends StatefulWidget { + const CatalogScreen({super.key}); + + @override + State createState() => _CatalogScreenState(); +} + +class _CatalogScreenState extends State { + final _repo = WordsRepository(); + final _searchController = TextEditingController(); + String _selectedCategory = 'Все'; + String _sortBy = 'id'; // 'id', 'alpha' + + List _filteredWords = []; + + @override + void initState() { + super.initState(); + _applyFilter(); + _searchController.addListener(_applyFilter); + } + + @override + void dispose() { + _searchController.removeListener(_applyFilter); + _searchController.dispose(); + super.dispose(); + } + + void _applyFilter() { + final query = _searchController.text.trim(); + List list; + + if (query.isEmpty) { + list = _repo.allWords; + } else { + list = _repo.search(query); + } + + if (_selectedCategory != 'Все') { + list = list + .where((w) => w.partOfSpeech == _selectedCategory || w.category == _selectedCategory) + .toList(); + } + + if (_sortBy == 'alpha') { + list = List.of(list)..sort((a, b) => a.word.compareTo(b.word)); + } else { + // By session number + list = List.of(list)..sort((a, b) => a.sessionNumber.compareTo(b.sessionNumber)); + } + + setState(() { + _filteredWords = list; + }); + } + + void _showWordDetails(WordItem word) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (context) => StatefulBuilder( + builder: (context, setSheetState) { + return Container( + padding: const EdgeInsets.only(top: 12), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surface, + borderRadius: const BorderRadius.vertical(top: Radius.circular(28)), + ), + child: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.outlineVariant, + borderRadius: BorderRadius.circular(2), + ), + ), + const SizedBox(height: 12), + WordCardWidget( + word: word, + onNext: () { + final next = _repo.getNextWord(word.sessionNumber); + Navigator.pop(context); + _showWordDetails(next); + }, + onPrevious: () { + final prev = _repo.getPreviousWord(word.sessionNumber); + Navigator.pop(context); + _showWordDetails(prev); + }, + onRandom: () { + final rnd = _repo.getRandomWord(); + Navigator.pop(context); + _showWordDetails(rnd); + }, + ), + ], + ), + ), + ), + ); + }, + ), + ); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + final categories = _repo.getPartsOfSpeech(); + + return Scaffold( + appBar: AppBar( + title: const Row( + children: [ + GradientStar(size: 22), + SizedBox(width: 8), + Text( + 'Каталог 999 символов', + style: TextStyle(fontWeight: FontWeight.w900), + ), + ], + ), + actions: [ + PopupMenuButton( + tooltip: 'Сортировка', + icon: const Icon(Icons.sort_rounded), + initialValue: _sortBy, + onSelected: (val) { + setState(() { + _sortBy = val; + _applyFilter(); + }); + }, + itemBuilder: (context) => [ + const PopupMenuItem( + value: 'id', + child: Row( + children: [ + Icon(Icons.format_list_numbered, size: 20), + SizedBox(width: 8), + Text('По номеру сессии (#000..#999)'), + ], + ), + ), + const PopupMenuItem( + value: 'alpha', + child: Row( + children: [ + Icon(Icons.sort_by_alpha, size: 20), + SizedBox(width: 8), + Text('По алфавиту (А..Я)'), + ], + ), + ), + ], + ), + ], + ), + body: Column( + children: [ + // Search input + Padding( + padding: const EdgeInsets.fromLTRB(16, 8, 16, 8), + child: TextField( + controller: _searchController, + decoration: InputDecoration( + hintText: 'Поиск по символу, номеру или смыслу...', + prefixIcon: const Padding( + padding: EdgeInsets.symmetric(horizontal: 10), + child: GradientStar(size: 16), + ), + suffixIcon: _searchController.text.isNotEmpty + ? IconButton( + icon: const Icon(Icons.clear), + onPressed: () => _searchController.clear(), + ) + : null, + filled: true, + fillColor: isDark + ? const Color(0xFF1B1D30) + : theme.colorScheme.surfaceContainerHighest.withValues(alpha: 0.4), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(16), + borderSide: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.3), + ), + ), + contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + ), + ), + ), + + // Categories Filter Chips + SingleChildScrollView( + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4), + child: Row( + children: categories.map((cat) { + final isSelected = _selectedCategory == cat; + return Padding( + padding: const EdgeInsets.only(right: 6), + child: FilterChip( + label: Text(cat), + selected: isSelected, + onSelected: (selected) { + setState(() { + _selectedCategory = cat; + _applyFilter(); + }); + }, + selectedColor: const Color(0xFF2A2D4A), + checkmarkColor: const Color(0xFFFFD54F), + labelStyle: TextStyle( + color: isSelected ? const Color(0xFFFFF9C4) : null, + fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, + ), + ), + ); + }).toList(), + ), + ), + + // Stats Bar + Padding( + padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 6), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + 'Найдено: ${_filteredWords.length}', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: theme.colorScheme.outline, + ), + ), + Text( + 'Всего знаков: ${_repo.totalWords}', + style: TextStyle( + fontSize: 12, + color: theme.colorScheme.outline, + ), + ), + ], + ), + ), + + const Divider(height: 1), + + // Words List + Expanded( + child: _filteredWords.isEmpty + ? const Center( + child: Text('Ничего не найдено'), + ) + : ListView.separated( + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + itemCount: _filteredWords.length, + separatorBuilder: (_, _) => const Divider(height: 1, indent: 64), + itemBuilder: (context, index) { + final item = _filteredWords[index]; + + return ListTile( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + leading: GradientStarBadge( + text: '#${item.formattedSessionNumber}', + size: 14, + ), + title: Text( + item.word.toUpperCase(), + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 16, + letterSpacing: 0.5, + ), + ), + subtitle: Text( + item.description, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 12, + color: theme.colorScheme.onSurfaceVariant, + ), + ), + trailing: const Icon(Icons.chevron_right_rounded, size: 20), + onTap: () => _showWordDetails(item), + ); + }, + ), + ), + ], + ), + ); + } +} diff --git a/lib/screens/history_screen.dart b/lib/screens/history_screen.dart new file mode 100644 index 0000000..f70ba55 --- /dev/null +++ b/lib/screens/history_screen.dart @@ -0,0 +1,268 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../models/history_entry_model.dart'; +import '../services/words_repository.dart'; +import '../widgets/gradient_star_badge.dart'; + +class HistoryScreen extends StatefulWidget { + const HistoryScreen({super.key}); + + @override + State createState() => _HistoryScreenState(); +} + +class _HistoryScreenState extends State { + final _repo = WordsRepository(); + + void _confirmClearHistory() { + showDialog( + context: context, + builder: (ctx) => AlertDialog( + title: const Row( + children: [ + GradientStar(size: 20), + SizedBox(width: 8), + Text('Очистить историю?'), + ], + ), + content: const Text( + 'Все сохранённые записи гаданий и жребиев с датами будут удалены.', + ), + actions: [ + TextButton( + onPressed: () => Navigator.pop(ctx), + child: const Text('Отмена'), + ), + FilledButton( + onPressed: () async { + Navigator.pop(ctx); + await _repo.clearHistory(); + setState(() {}); + HapticFeedback.mediumImpact(); + }, + style: FilledButton.styleFrom(backgroundColor: Colors.red.shade800), + child: const Text('Очистить'), + ), + ], + ), + ); + } + + void _copyEntry(HistoryEntry entry) { + final text = + '✨ Оракул 999 — Запись из Истории ✨\n' + 'Время: ${entry.formattedDate}\n' + 'Тип: ${entry.readingType}${entry.positionTitle != null ? ' (${entry.positionTitle})' : ''}\n' + 'Знак №${entry.formattedSessionNumber}: ${entry.word.toUpperCase()}\n' + 'Часть речи: ${entry.partOfSpeech}\n\n' + '🔮 Толкование:\n${entry.symbolicMeaning}'; + + Clipboard.setData(ClipboardData(text: text)); + HapticFeedback.lightImpact(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Row( + children: [ + GradientStar(size: 18), + SizedBox(width: 10), + Expanded(child: Text('Запись скопирована в буфер обмена')), + ], + ), + duration: const Duration(seconds: 2), + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + ), + ); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + final historyList = _repo.history; + + return Scaffold( + appBar: AppBar( + title: const Row( + children: [ + GradientStar(size: 24), + SizedBox(width: 10), + Text( + 'История гаданий', + style: TextStyle(fontWeight: FontWeight.w900), + ), + ], + ), + actions: [ + if (historyList.isNotEmpty) + IconButton( + tooltip: 'Очистить историю', + icon: const Icon(Icons.delete_outline_rounded), + onPressed: _confirmClearHistory, + ), + ], + ), + body: historyList.isEmpty + ? Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const GradientStar(size: 48), + const SizedBox(height: 16), + Text( + 'История пока пуста', + style: theme.textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 32), + child: Text( + 'Совершите жребий или сохраните выпавший символ, и он появится здесь с точной датой и временем.', + textAlign: TextAlign.center, + style: TextStyle(color: theme.colorScheme.outline), + ), + ), + ], + ), + ) + : ListView.separated( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 10), + itemCount: historyList.length, + separatorBuilder: (_, _) => const SizedBox(height: 10), + itemBuilder: (context, index) { + final item = historyList[index]; + + return Card( + elevation: 3, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(18), + side: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.2), + ), + ), + color: isDark ? const Color(0xFF1B1D30) : theme.colorScheme.surface, + child: Padding( + padding: const EdgeInsets.all(14), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Top header: Timestamp and Reading type + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const Icon( + Icons.access_time_rounded, + size: 14, + color: Color(0xFFFFD54F), + ), + const SizedBox(width: 5), + Text( + item.formattedDate, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w600, + color: Color(0xFFFFD54F), + ), + ), + ], + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + decoration: BoxDecoration( + color: const Color(0xFF2A2D4A), + borderRadius: BorderRadius.circular(8), + ), + child: Text( + item.readingType, + style: const TextStyle( + fontSize: 11, + color: Color(0xFFFFF9C4), + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ), + + if (item.positionTitle != null) ...[ + const SizedBox(height: 6), + Text( + item.positionTitle!, + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: theme.colorScheme.primary, + ), + ), + ], + + const SizedBox(height: 10), + + // Word row with number badge + Row( + children: [ + GradientStarBadge( + text: '#${item.formattedSessionNumber}', + size: 14, + ), + const SizedBox(width: 10), + Expanded( + child: Text( + item.word.toUpperCase(), + style: const TextStyle( + fontWeight: FontWeight.w900, + fontSize: 18, + letterSpacing: 0.8, + ), + ), + ), + IconButton( + icon: const Icon(Icons.copy_rounded, size: 18), + tooltip: 'Скопировать', + onPressed: () => _copyEntry(item), + ), + IconButton( + icon: const Icon(Icons.delete_outline, size: 18), + tooltip: 'Удалить', + onPressed: () async { + await _repo.deleteHistoryEntry(item.id); + setState(() {}); + }, + ), + ], + ), + + const SizedBox(height: 8), + + // Meaning snippet + Container( + width: double.infinity, + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: isDark + ? const Color(0xFF131524) + : theme.colorScheme.surfaceContainerLow, + borderRadius: BorderRadius.circular(12), + ), + child: Text( + item.symbolicMeaning, + style: TextStyle( + fontSize: 13, + height: 1.4, + color: isDark ? const Color(0xFFD4D6E6) : Colors.black87, + ), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/screens/home_search_screen.dart b/lib/screens/home_search_screen.dart new file mode 100644 index 0000000..e8303bb --- /dev/null +++ b/lib/screens/home_search_screen.dart @@ -0,0 +1,451 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../models/word_model.dart'; +import '../services/words_repository.dart'; +import '../widgets/gradient_star_badge.dart'; +import '../widgets/word_card_widget.dart'; + +class HomeSearchScreen extends StatefulWidget { + const HomeSearchScreen({super.key}); + + @override + State createState() => _HomeSearchScreenState(); +} + +class _HomeSearchScreenState extends State { + final _repo = WordsRepository(); + final _searchController = TextEditingController(); + final _focusNode = FocusNode(); + + WordItem? _currentWord; + List _searchResults = []; + bool _showKeypad = true; + + @override + void initState() { + super.initState(); + _currentWord = _repo.getWordBySessionNumber(0) ?? _repo.allWords.first; + _searchController.addListener(_onSearchChanged); + } + + @override + void dispose() { + _searchController.removeListener(_onSearchChanged); + _searchController.dispose(); + _focusNode.dispose(); + super.dispose(); + } + + void _onSearchChanged() { + final query = _searchController.text.trim(); + if (query.isEmpty) { + setState(() { + _searchResults = []; + }); + return; + } + + final results = _repo.search(query); + setState(() { + _searchResults = results; + if (results.isNotEmpty) { + _currentWord = results.first; + } + }); + } + + void _setWord(WordItem word, {bool updateText = false}) { + setState(() { + _currentWord = word; + if (updateText) { + _searchController.text = word.sessionNumber.toString(); + } + }); + HapticFeedback.selectionClick(); + } + + void _onKeypadTap(String val) { + HapticFeedback.lightImpact(); + String currentText = _searchController.text; + + if (val == 'C') { + _searchController.clear(); + return; + } + + if (val == '⌫') { + if (currentText.isNotEmpty) { + _searchController.text = currentText.substring(0, currentText.length - 1); + _searchController.selection = TextSelection.fromPosition( + TextPosition(offset: _searchController.text.length), + ); + } + return; + } + + // Append digit + if (currentText.length >= 3) { + _searchController.text = val; + } else { + final newText = currentText + val; + final num = int.tryParse(newText); + if (num != null && num <= 999) { + _searchController.text = newText; + } else { + _searchController.text = val; + } + } + + _searchController.selection = TextSelection.fromPosition( + TextPosition(offset: _searchController.text.length), + ); + } + + void _goToNext() { + if (_currentWord == null) return; + final next = _repo.getNextWord(_currentWord!.sessionNumber); + _setWord(next, updateText: true); + } + + void _goToPrevious() { + if (_currentWord == null) return; + final prev = _repo.getPreviousWord(_currentWord!.sessionNumber); + _setWord(prev, updateText: true); + } + + void _goToRandom() { + final rnd = _repo.getRandomWord(); + _setWord(rnd, updateText: true); + } + + void _reshuffleSession() { + _repo.reshuffleSessionNumbers(); + final first = _repo.getWordBySessionNumber(0) ?? _repo.allWords.first; + setState(() { + _currentWord = first; + _searchController.clear(); + _searchResults = []; + }); + HapticFeedback.heavyImpact(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: const Row( + children: [ + GradientStar(size: 20), + SizedBox(width: 10), + Expanded( + child: Text( + 'Случайный порядок 1000 чисел перетасован заново!', + style: TextStyle(fontWeight: FontWeight.w600), + ), + ), + ], + ), + duration: const Duration(seconds: 2), + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + ), + ); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + + return Scaffold( + appBar: AppBar( + title: Row( + children: [ + const GradientStar(size: 24), + const SizedBox(width: 10), + const Text( + 'Оракул 999', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w900, + letterSpacing: 0.5, + ), + ), + ], + ), + actions: [ + IconButton( + tooltip: 'Перетасовать числа сессии (#000..#999)', + icon: const Icon(Icons.refresh_rounded), + onPressed: _reshuffleSession, + ), + IconButton( + tooltip: _showKeypad ? 'Скрыть цифровую панель' : 'Показать цифровую панель', + icon: Icon(_showKeypad ? Icons.dialpad_outlined : Icons.dialpad), + onPressed: () { + setState(() => _showKeypad = !_showKeypad); + }, + ), + IconButton( + tooltip: 'Случайный жребий', + icon: const Icon(Icons.shuffle_rounded), + onPressed: _goToRandom, + ), + ], + ), + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Search & Number Input Bar + TextField( + controller: _searchController, + focusNode: _focusNode, + keyboardType: TextInputType.text, + decoration: InputDecoration( + labelText: 'Введите номер (#000..#999) или символ', + hintText: 'Например: 777 или огонь', + prefixIcon: const Padding( + padding: EdgeInsets.symmetric(horizontal: 12), + child: GradientStar(size: 18), + ), + suffixIcon: _searchController.text.isNotEmpty + ? IconButton( + icon: const Icon(Icons.clear_rounded), + onPressed: () { + _searchController.clear(); + _focusNode.unfocus(); + }, + ) + : null, + filled: true, + fillColor: isDark + ? const Color(0xFF1B1D30) + : theme.colorScheme.surfaceContainerHighest.withValues(alpha: 0.4), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(18), + borderSide: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.3), + ), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(18), + borderSide: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.25), + ), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(18), + borderSide: const BorderSide( + color: Color(0xFFFFD54F), + width: 1.8, + ), + ), + ), + ), + + // Search matches dropdown list if query produced text matches + if (_searchResults.length > 1 && _searchController.text.isNotEmpty) ...[ + const SizedBox(height: 8), + Container( + constraints: const BoxConstraints(maxHeight: 140), + decoration: BoxDecoration( + color: isDark ? const Color(0xFF161828) : theme.colorScheme.surface, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.3), + ), + ), + child: ListView.separated( + shrinkWrap: true, + padding: const EdgeInsets.symmetric(vertical: 4), + itemCount: _searchResults.length > 10 ? 10 : _searchResults.length, + separatorBuilder: (_, _) => const Divider(height: 1), + itemBuilder: (context, idx) { + final item = _searchResults[idx]; + final isSelected = item.sessionNumber == _currentWord?.sessionNumber; + return ListTile( + dense: true, + selected: isSelected, + leading: GradientStarBadge( + text: '#${item.formattedSessionNumber}', + size: 14, + ), + title: Text( + item.word.toUpperCase(), + style: const TextStyle(fontWeight: FontWeight.bold), + ), + subtitle: Text( + item.description, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontSize: 11), + ), + trailing: Text( + item.partOfSpeech, + style: TextStyle( + fontSize: 11, + color: theme.colorScheme.outline, + ), + ), + onTap: () { + _setWord(item, updateText: false); + }, + ); + }, + ), + ), + ], + + const SizedBox(height: 14), + + // Main Sacred Word Card Display + if (_currentWord != null) + AnimatedSwitcher( + duration: const Duration(milliseconds: 300), + transitionBuilder: (child, animation) { + return FadeTransition( + opacity: animation, + child: SlideTransition( + position: Tween( + begin: const Offset(0.0, 0.04), + end: Offset.zero, + ).animate(animation), + child: child, + ), + ); + }, + child: WordCardWidget( + key: ValueKey('${_currentWord!.id}_${_currentWord!.sessionNumber}'), + word: _currentWord!, + onNext: _goToNext, + onPrevious: _goToPrevious, + onRandom: _goToRandom, + ), + ) + else + Center( + child: Padding( + padding: const EdgeInsets.all(32.0), + child: Text( + 'Символ с таким номером не найден.', + textAlign: TextAlign.center, + style: TextStyle(color: theme.colorScheme.error), + ), + ), + ), + + const SizedBox(height: 14), + + // Interactive Numeric Keypad (1..9, C, 0, ⌫) + if (_showKeypad) ...[ + Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: isDark + ? const Color(0xFF17192A) + : theme.colorScheme.surfaceContainerLow, + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.25), + ), + ), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Row( + children: [ + GradientStar(size: 14), + SizedBox(width: 6), + Text( + 'Случайный жребий числа:', + style: TextStyle( + fontSize: 12, + fontWeight: FontWeight.w700, + color: Color(0xFFFFD54F), + ), + ), + ], + ), + Text( + '000 — 999', + style: TextStyle( + fontSize: 11, + color: theme.colorScheme.outline, + ), + ), + ], + ), + const SizedBox(height: 10), + _buildKeypadRow(['1', '2', '3']), + const SizedBox(height: 8), + _buildKeypadRow(['4', '5', '6']), + const SizedBox(height: 8), + _buildKeypadRow(['7', '8', '9']), + const SizedBox(height: 8), + _buildKeypadRow(['C', '0', '⌫']), + ], + ), + ), + const SizedBox(height: 16), + ], + ], + ), + ), + ), + ); + } + + Widget _buildKeypadRow(List keys) { + return Row( + children: keys.map((key) { + final isSpecial = key == 'C' || key == '⌫'; + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + + return Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Material( + color: isSpecial + ? const Color(0xFF2A2D4A) + : isDark + ? const Color(0xFF20233A) + : theme.colorScheme.surface, + borderRadius: BorderRadius.circular(14), + elevation: 1, + child: InkWell( + onTap: () => _onKeypadTap(key), + borderRadius: BorderRadius.circular(14), + child: Container( + height: 46, + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(14), + border: Border.all( + color: isSpecial + ? const Color(0xFFFFD54F).withValues(alpha: 0.4) + : Colors.white10, + ), + ), + child: Text( + key, + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + color: isSpecial + ? const Color(0xFFFFF9C4) + : isDark + ? Colors.white + : Colors.black87, + ), + ), + ), + ), + ), + ), + ); + }).toList(), + ); + } +} diff --git a/lib/screens/oracle_spread_screen.dart b/lib/screens/oracle_spread_screen.dart new file mode 100644 index 0000000..6a7ae79 --- /dev/null +++ b/lib/screens/oracle_spread_screen.dart @@ -0,0 +1,298 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../models/history_entry_model.dart'; +import '../models/word_model.dart'; +import '../services/words_repository.dart'; +import '../widgets/gradient_star_badge.dart'; +import '../widgets/word_card_widget.dart'; + +class OracleSpreadScreen extends StatefulWidget { + const OracleSpreadScreen({super.key}); + + @override + State createState() => _OracleSpreadScreenState(); +} + +class _OracleSpreadScreenState extends State { + final _repo = WordsRepository(); + int _selectedMode = 0; // 0 = Single Card (Жребий момента), 1 = Triad (3 карты) + + WordItem? _singleDraw; + List _triadDraw = []; + bool _isGenerating = false; + + @override + void initState() { + super.initState(); + _singleDraw = _repo.getRandomWord(); + } + + Future _performSingleDraw({bool saveHistory = true}) async { + setState(() => _isGenerating = true); + HapticFeedback.mediumImpact(); + await Future.delayed(const Duration(milliseconds: 250)); + + final word = _repo.getRandomWord(); + setState(() { + _singleDraw = word; + _isGenerating = false; + }); + + if (saveHistory) { + final entry = HistoryEntry( + id: DateTime.now().millisecondsSinceEpoch.toString(), + timestamp: DateTime.now(), + word: word.word, + sessionNumber: word.sessionNumber, + partOfSpeech: word.partOfSpeech, + symbolicMeaning: word.description, + readingType: 'Жребий момента (1 символ)', + ); + await _repo.addHistoryEntry(entry); + } + } + + Future _performTriadDraw() async { + setState(() => _isGenerating = true); + HapticFeedback.heavyImpact(); + await Future.delayed(const Duration(milliseconds: 300)); + + final words = []; + final titles = [ + 'Истоки / Скрытая причина', + 'Настоящее / Вызов', + 'Совет / Исход', + ]; + + while (words.length < 3) { + final w = _repo.getRandomWord(); + if (!words.any((item) => item.id == w.id)) { + words.add(w); + } + } + + setState(() { + _triadDraw = words; + _isGenerating = false; + }); + + for (int i = 0; i < words.length; i++) { + final entry = HistoryEntry( + id: '${DateTime.now().millisecondsSinceEpoch}_$i', + timestamp: DateTime.now(), + word: words[i].word, + sessionNumber: words[i].sessionNumber, + partOfSpeech: words[i].partOfSpeech, + symbolicMeaning: words[i].description, + readingType: 'Триада судьбы', + positionTitle: titles[i], + ); + await _repo.addHistoryEntry(entry); + } + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + + return Scaffold( + appBar: AppBar( + title: const Row( + children: [ + GradientStar(size: 24), + SizedBox(width: 10), + Text( + 'Расклады Оракула', + style: TextStyle(fontWeight: FontWeight.w900), + ), + ], + ), + ), + body: SafeArea( + child: SingleChildScrollView( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Mode Selector (1 символ / Триада 3 символа) + Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: isDark ? const Color(0xFF1B1D30) : theme.colorScheme.surfaceContainerHigh, + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.3), + ), + ), + child: Row( + children: [ + Expanded( + child: InkWell( + onTap: () { + setState(() => _selectedMode = 0); + if (_singleDraw == null) _performSingleDraw(saveHistory: false); + }, + borderRadius: BorderRadius.circular(12), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: _selectedMode == 0 + ? const Color(0xFF2A2D4A) + : Colors.transparent, + borderRadius: BorderRadius.circular(12), + border: _selectedMode == 0 + ? Border.all(color: const Color(0xFFFFD54F).withValues(alpha: 0.5)) + : null, + ), + alignment: Alignment.center, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const GradientStar(size: 14), + const SizedBox(width: 6), + Text( + 'Жребий момента (1)', + style: TextStyle( + fontWeight: FontWeight.bold, + color: _selectedMode == 0 + ? const Color(0xFFFFF9C4) + : theme.colorScheme.outline, + ), + ), + ], + ), + ), + ), + ), + Expanded( + child: InkWell( + onTap: () { + setState(() => _selectedMode = 1); + if (_triadDraw.isEmpty) _performTriadDraw(); + }, + borderRadius: BorderRadius.circular(12), + child: Container( + padding: const EdgeInsets.symmetric(vertical: 10), + decoration: BoxDecoration( + color: _selectedMode == 1 + ? const Color(0xFF2A2D4A) + : Colors.transparent, + borderRadius: BorderRadius.circular(12), + border: _selectedMode == 1 + ? Border.all(color: const Color(0xFFFFD54F).withValues(alpha: 0.5)) + : null, + ), + alignment: Alignment.center, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const GradientStar(size: 14), + const SizedBox(width: 6), + Text( + 'Триада судьбы (3)', + style: TextStyle( + fontWeight: FontWeight.bold, + color: _selectedMode == 1 + ? const Color(0xFFFFF9C4) + : theme.colorScheme.outline, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + + const SizedBox(height: 16), + + // Action draw button + FilledButton.icon( + onPressed: _isGenerating + ? null + : () { + if (_selectedMode == 0) { + _performSingleDraw(saveHistory: true); + } else { + _performTriadDraw(); + } + }, + icon: const GradientStar(size: 20), + label: Text( + _selectedMode == 0 ? 'БРОСИТЬ ЖРЕБИЙ МОМЕНТА' : 'РАСКРЫТЬ ТРИАДУ СУДЬБЫ', + style: const TextStyle( + fontWeight: FontWeight.w900, + letterSpacing: 0.8, + ), + ), + style: FilledButton.styleFrom( + backgroundColor: const Color(0xFF2A2D4A), + foregroundColor: const Color(0xFFFFF9C4), + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(18), + side: const BorderSide( + color: Color(0xFFFFD54F), + width: 1.2, + ), + ), + ), + ), + + const SizedBox(height: 20), + + if (_isGenerating) + const Center( + child: Padding( + padding: EdgeInsets.all(40.0), + child: Column( + children: [ + CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation(Color(0xFFFFD54F)), + ), + SizedBox(height: 16), + Text( + 'Синхронизация с полем оракула...', + style: TextStyle(fontStyle: FontStyle.italic), + ), + ], + ), + ), + ) + else if (_selectedMode == 0 && _singleDraw != null) + WordCardWidget( + word: _singleDraw!, + positionTitle: 'Символ момента', + onRandom: () => _performSingleDraw(saveHistory: true), + ) + else if (_selectedMode == 1 && _triadDraw.isNotEmpty) + Column( + children: [ + WordCardWidget( + word: _triadDraw[0], + positionTitle: '1. Истоки / Скрытая причина', + ), + const SizedBox(height: 14), + WordCardWidget( + word: _triadDraw[1], + positionTitle: '2. Настоящее / Вызов', + ), + const SizedBox(height: 14), + WordCardWidget( + word: _triadDraw[2], + positionTitle: '3. Совет / Исход', + ), + ], + ), + + const SizedBox(height: 24), + ], + ), + ), + ), + ); + } +} diff --git a/lib/services/words_repository.dart b/lib/services/words_repository.dart new file mode 100644 index 0000000..bdb7cf3 --- /dev/null +++ b/lib/services/words_repository.dart @@ -0,0 +1,186 @@ +import 'dart:convert'; +import 'dart:math'; +import 'package:shared_preferences/shared_preferences.dart'; +import '../data/words_data.dart'; +import '../models/history_entry_model.dart'; +import '../models/word_model.dart'; + +class WordsRepository { + static final WordsRepository _instance = WordsRepository._internal(); + factory WordsRepository() => _instance; + WordsRepository._internal(); + + final List _masterWords = List.from(kRussianTop1000Words); + List _sessionWords = []; + final List _history = []; + bool _isInitialized = false; + + List get allWords => List.unmodifiable(_sessionWords); + int get totalWords => _sessionWords.length; + List get history => List.unmodifiable(_history); + + Future init() async { + if (_isInitialized) return; + + // Always reshuffle session numbers on startup for true synchronicity & randomization + reshuffleSessionNumbers(); + + // Load history from persistence + try { + final prefs = await SharedPreferences.getInstance(); + final historyJsonList = prefs.getStringList('oracle_history_entries') ?? []; + _history.clear(); + for (final str in historyJsonList) { + try { + final map = jsonDecode(str) as Map; + _history.add(HistoryEntry.fromMap(map)); + } catch (_) {} + } + } catch (_) {} + + _isInitialized = true; + } + + /// Cryptographic/pseudo-random Fisher-Yates shuffle to map 000..999 to words for the current session + void reshuffleSessionNumbers() { + final random = Random(); + final indices = List.generate(_masterWords.length, (i) => i); + indices.shuffle(random); + + final mappedList = []; + for (int i = 0; i < _masterWords.length; i++) { + final baseWord = _masterWords[indices[i]]; + // i is the dynamic sessionNumber (0..999) + final sessionItem = baseWord.copyWith(sessionNumber: i); + mappedList.add(sessionItem); + } + + _sessionWords = mappedList; + } + + WordItem? getWordBySessionNumber(int sessionNum) { + if (sessionNum < 0 || sessionNum >= _sessionWords.length) return null; + return _sessionWords[sessionNum]; + } + + WordItem? getWordById(int id) { + return getWordBySessionNumber(id); + } + + WordItem getRandomWord() { + if (_sessionWords.isEmpty) { + return _masterWords.first; + } + final random = Random(); + final index = random.nextInt(_sessionWords.length); + return _sessionWords[index]; + } + + WordItem getNextWord(int currentSessionNum) { + if (_sessionWords.isEmpty) return getRandomWord(); + final nextId = (currentSessionNum + 1) % _sessionWords.length; + return _sessionWords[nextId]; + } + + WordItem getPreviousWord(int currentSessionNum) { + if (_sessionWords.isEmpty) return getRandomWord(); + final prevId = (currentSessionNum - 1 + _sessionWords.length) % _sessionWords.length; + return _sessionWords[prevId]; + } + + List search(String rawQuery) { + final query = rawQuery.trim().toLowerCase(); + if (query.isEmpty) return _sessionWords; + + // Check if query is a number (e.g. 0, 00, 000, 42, 042, 999) + final number = int.tryParse(query); + if (number != null && number >= 0 && number < _sessionWords.length) { + final exact = _sessionWords[number]; + final matches = _sessionWords.where((w) { + if (w.sessionNumber == number) return false; + final idStr = w.sessionNumber.toString(); + final paddedStr = w.formattedSessionNumber; + return idStr.startsWith(query) || paddedStr.startsWith(query); + }).take(30).toList(); + return [exact, ...matches]; + } + + // Partial numeric match + if (RegExp(r'^\d+$').hasMatch(query)) { + return _sessionWords.where((w) { + final idStr = w.sessionNumber.toString(); + final paddedStr = w.formattedSessionNumber; + return idStr.startsWith(query) || paddedStr.startsWith(query); + }).take(30).toList(); + } + + // Text search in word, description, category, and part of speech + final exact = []; + final startsWith = []; + final contains = []; + + for (final w in _sessionWords) { + final lower = w.word.toLowerCase(); + if (lower == query) { + exact.add(w); + } else if (lower.startsWith(query)) { + startsWith.add(w); + } else if (lower.contains(query) || + w.description.toLowerCase().contains(query) || + w.category.toLowerCase().contains(query) || + w.partOfSpeech.toLowerCase().contains(query)) { + contains.add(w); + } + } + + return [...exact, ...startsWith, ...contains]; + } + + List getCategories() { + final set = {'Все'}; + for (final w in _sessionWords) { + if (w.category.isNotEmpty) { + set.add(w.category); + } + } + return set.toList(); + } + + List getPartsOfSpeech() { + final set = {'Все'}; + for (final w in _sessionWords) { + if (w.partOfSpeech.isNotEmpty) { + set.add(w.partOfSpeech); + } + } + return set.toList(); + } + + // --- History Management --- + + Future addHistoryEntry(HistoryEntry entry) async { + _history.insert(0, entry); + if (_history.length > 500) { + _history.removeRange(500, _history.length); + } + await _saveHistoryToPrefs(); + } + + Future deleteHistoryEntry(String id) async { + _history.removeWhere((e) => e.id == id); + await _saveHistoryToPrefs(); + } + + Future clearHistory() async { + _history.clear(); + await _saveHistoryToPrefs(); + } + + Future _saveHistoryToPrefs() async { + try { + final prefs = await SharedPreferences.getInstance(); + final list = _history.map((e) => jsonEncode(e.toMap())).toList(); + await prefs.setStringList('oracle_history_entries', list); + } catch (_) {} + } +} diff --git a/lib/widgets/gradient_star_badge.dart b/lib/widgets/gradient_star_badge.dart new file mode 100644 index 0000000..ec77d6c --- /dev/null +++ b/lib/widgets/gradient_star_badge.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; + +class GradientStar extends StatelessWidget { + final double size; + final bool hasGlow; + + const GradientStar({ + super.key, + this.size = 24, + this.hasGlow = true, + }); + + @override + Widget build(BuildContext context) { + Widget starIcon = ShaderMask( + shaderCallback: (Rect bounds) { + return const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFFFFFFFF), // Pure white + Color(0xFFFFF9C4), // Light lemon + Color(0xFFFFEE58), // Bright yellow + Color(0xFFFFCA28), // Golden amber + ], + stops: [0.0, 0.35, 0.7, 1.0], + ).createShader(bounds); + }, + child: Icon( + Icons.star_rounded, + size: size, + color: Colors.white, + ), + ); + + if (!hasGlow) return starIcon; + + return Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: const Color(0xFFFFD54F).withValues(alpha: 0.35), + blurRadius: size * 0.4, + spreadRadius: size * 0.1, + ), + ], + ), + child: starIcon, + ); + } +} + +class GradientStarBadge extends StatelessWidget { + final String text; + final double size; + + const GradientStarBadge({ + super.key, + required this.text, + this.size = 20, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFF2A2D4A), + const Color(0xFF1B1D30), + ], + ), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.5), + width: 1.2, + ), + boxShadow: [ + BoxShadow( + color: const Color(0xFFFFD54F).withValues(alpha: 0.15), + blurRadius: 8, + offset: const Offset(0, 2), + ), + ], + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + GradientStar(size: size), + const SizedBox(width: 6), + Text( + text, + style: const TextStyle( + fontWeight: FontWeight.w900, + fontSize: 14, + letterSpacing: 0.5, + color: Color(0xFFFFF9C4), + ), + ), + ], + ), + ); + } +} diff --git a/lib/widgets/word_card_widget.dart b/lib/widgets/word_card_widget.dart new file mode 100644 index 0000000..5fc4efc --- /dev/null +++ b/lib/widgets/word_card_widget.dart @@ -0,0 +1,400 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../models/history_entry_model.dart'; +import '../models/word_model.dart'; +import '../services/words_repository.dart'; +import 'gradient_star_badge.dart'; + +class WordCardWidget extends StatefulWidget { + final WordItem word; + final VoidCallback? onNext; + final VoidCallback? onPrevious; + final VoidCallback? onRandom; + final String? positionTitle; // Optional title for spread positions + + const WordCardWidget({ + super.key, + required this.word, + this.onNext, + this.onPrevious, + this.onRandom, + this.positionTitle, + }); + + @override + State createState() => _WordCardWidgetState(); +} + +class _WordCardWidgetState extends State { + final _repo = WordsRepository(); + bool _savedToHistory = false; + + @override + void didUpdateWidget(covariant WordCardWidget oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.word.id != widget.word.id || + oldWidget.word.sessionNumber != widget.word.sessionNumber) { + _savedToHistory = false; + } + } + + Color _getPosColor(String pos) { + switch (pos.toLowerCase()) { + case 'существительное': + return const Color(0xFF64B5F6); // Celestial Blue + case 'глагол': + return const Color(0xFF81C784); // Vital Green + case 'прилагательное': + return const Color(0xFFFFD54F); // Golden + case 'наречие': + case 'наречие-местоимение': + return const Color(0xFFBA68C8); // Mystic Violet + case 'местоимение': + case 'местоименное прил.': + return const Color(0xFF4DD0E1); // Cyan + case 'предлог': + case 'союз': + case 'частица': + return const Color(0xFFFF8A65); // Coral Ember + default: + return const Color(0xFF90A4AE); + } + } + + Future _recordToHistory() async { + if (_savedToHistory) return; + final entry = HistoryEntry( + id: DateTime.now().millisecondsSinceEpoch.toString(), + timestamp: DateTime.now(), + word: widget.word.word, + sessionNumber: widget.word.sessionNumber, + partOfSpeech: widget.word.partOfSpeech, + symbolicMeaning: widget.word.description, + readingType: widget.positionTitle ?? 'Жребий номера', + positionTitle: widget.positionTitle, + ); + await _repo.addHistoryEntry(entry); + if (!mounted) return; + setState(() => _savedToHistory = true); + HapticFeedback.mediumImpact(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + const GradientStar(size: 18), + const SizedBox(width: 10), + Expanded( + child: Text('Символ «${widget.word.word}» сохранён в историю'), + ), + ], + ), + duration: const Duration(seconds: 2), + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + ), + ); + } + + void _copyToClipboard(BuildContext context) { + final now = DateTime.now(); + final day = now.day.toString().padLeft(2, '0'); + final month = now.month.toString().padLeft(2, '0'); + final year = now.year.toString(); + final hour = now.hour.toString().padLeft(2, '0'); + final min = now.minute.toString().padLeft(2, '0'); + + final text = + '✨ Оракул 999 — Толкование символа ✨\n' + 'Дата и время: $day.$month.$year $hour:$min\n' + 'Знак №${widget.word.formattedSessionNumber}: ${widget.word.word.toUpperCase()}\n' + 'Аспект: ${widget.word.partOfSpeech} • ${widget.word.category}\n\n' + '🔮 Символическое значение:\n${widget.word.description}'; + + Clipboard.setData(ClipboardData(text: text)); + HapticFeedback.lightImpact(); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Row( + children: [ + const GradientStar(size: 18), + const SizedBox(width: 10), + Expanded(child: Text('Толкование «${widget.word.word}» скопировано')), + ], + ), + duration: const Duration(seconds: 2), + behavior: SnackBarBehavior.floating, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + ), + ); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final isDark = theme.brightness == Brightness.dark; + final posColor = _getPosColor(widget.word.partOfSpeech); + + return Card( + elevation: 8, + shadowColor: const Color(0xFFFFD54F).withValues(alpha: 0.18), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(24), + side: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.25), + width: 1.2, + ), + ), + clipBehavior: Clip.antiAlias, + child: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: isDark + ? [ + const Color(0xFF1E2138), + const Color(0xFF121424), + ] + : [ + const Color(0xFFF9F9FF), + const Color(0xFFEFF1F9), + ], + ), + ), + padding: const EdgeInsets.all(22), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + // Optional spread position banner (e.g. "Исток / Прошлое") + if (widget.positionTitle != null) ...[ + Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 4), + decoration: BoxDecoration( + color: const Color(0xFFFFD54F).withValues(alpha: 0.15), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.4), + ), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const GradientStar(size: 14), + const SizedBox(width: 6), + Text( + widget.positionTitle!, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.bold, + color: Color(0xFFFFD54F), + letterSpacing: 0.5, + ), + ), + ], + ), + ), + ], + + // Top Row: Gradient Star Number Badge and Action Buttons + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GradientStarBadge( + text: '#${widget.word.formattedSessionNumber} / 999', + size: 18, + ), + Row( + children: [ + IconButton( + tooltip: 'Скопировать толкование', + icon: const Icon(Icons.copy_rounded, size: 20), + onPressed: () => _copyToClipboard(context), + ), + IconButton( + tooltip: _savedToHistory ? 'Сохранено в историю' : 'Сохранить в историю', + icon: Icon( + _savedToHistory ? Icons.bookmark_added_rounded : Icons.bookmark_add_outlined, + color: _savedToHistory ? const Color(0xFFFFD54F) : null, + size: 22, + ), + onPressed: _recordToHistory, + ), + ], + ), + ], + ), + + const SizedBox(height: 14), + + // Big Word Title + Center( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 6.0), + child: Text( + widget.word.word.toUpperCase(), + textAlign: TextAlign.center, + style: theme.textTheme.headlineMedium?.copyWith( + fontWeight: FontWeight.w900, + letterSpacing: 1.5, + color: isDark ? const Color(0xFFFFF9C4) : const Color(0xFF1B1D30), + ), + ), + ), + ), + + // Part of Speech & Category Badges + Center( + child: Wrap( + spacing: 8, + runSpacing: 6, + alignment: WrapAlignment.center, + children: [ + Chip( + avatar: Icon(Icons.auto_awesome, size: 14, color: posColor), + label: Text( + widget.word.partOfSpeech, + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: 12, + color: posColor, + ), + ), + backgroundColor: posColor.withValues(alpha: 0.12), + side: BorderSide(color: posColor.withValues(alpha: 0.3)), + padding: const EdgeInsets.symmetric(horizontal: 4), + ), + if (widget.word.category.isNotEmpty) + Chip( + label: Text( + widget.word.category, + style: TextStyle( + fontSize: 12, + color: isDark ? Colors.white70 : Colors.black87, + ), + ), + backgroundColor: isDark + ? Colors.white.withValues(alpha: 0.08) + : Colors.black.withValues(alpha: 0.05), + side: BorderSide.none, + padding: const EdgeInsets.symmetric(horizontal: 2), + ), + ], + ), + ), + + const SizedBox(height: 16), + Divider( + height: 1, + color: isDark ? Colors.white12 : Colors.black12, + ), + const SizedBox(height: 14), + + // Symbolic Divination Meaning Box + Container( + width: double.infinity, + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: isDark + ? const Color(0xFF141729) + : const Color(0xFFFFFFFF), + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: const Color(0xFFFFD54F).withValues(alpha: 0.2), + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: isDark ? 0.2 : 0.05), + blurRadius: 6, + offset: const Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const GradientStar(size: 16), + const SizedBox(width: 8), + Text( + 'СИМВОЛИЧЕСКОЕ ЗНАЧЕНИЕ', + style: TextStyle( + fontSize: 11, + fontWeight: FontWeight.w900, + letterSpacing: 1.0, + color: const Color(0xFFFFD54F), + ), + ), + ], + ), + const SizedBox(height: 10), + Text( + widget.word.description, + style: theme.textTheme.bodyLarge?.copyWith( + height: 1.5, + fontSize: 14.5, + color: isDark ? const Color(0xFFE2E4F0) : const Color(0xFF2C3042), + ), + ), + ], + ), + ), + + const SizedBox(height: 18), + + // Navigation Controls Row + Row( + children: [ + Expanded( + child: OutlinedButton.icon( + onPressed: widget.onPrevious, + icon: const Icon(Icons.arrow_back_ios_new_rounded, size: 14), + label: const Text('Пред.'), + style: OutlinedButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 12), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + ), + ), + ), + const SizedBox(width: 8), + IconButton.filledTonal( + tooltip: 'Случайный жребий', + onPressed: widget.onRandom, + icon: const GradientStar(size: 20), + style: IconButton.styleFrom( + padding: const EdgeInsets.all(12), + backgroundColor: const Color(0xFF2A2D4A), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + side: BorderSide( + color: const Color(0xFFFFD54F).withValues(alpha: 0.3), + ), + ), + ), + ), + const SizedBox(width: 8), + Expanded( + child: FilledButton.icon( + onPressed: widget.onNext, + icon: const Text('След.'), + label: const Icon(Icons.arrow_forward_ios_rounded, size: 14), + style: FilledButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 12), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14), + ), + ), + ), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..e491ff9 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,128 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "words999") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.words999.words999") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..e71a16d --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..2e1de87 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt new file mode 100644 index 0000000..e97dabc --- /dev/null +++ b/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/linux/runner/main.cc b/linux/runner/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/runner/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/runner/my_application.cc b/linux/runner/my_application.cc new file mode 100644 index 0000000..fb4d648 --- /dev/null +++ b/linux/runner/my_application.cc @@ -0,0 +1,148 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView* view) { + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "words999"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "words999"); + } + + gtk_window_set_default_size(window, 1280, 720); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments( + project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 + // for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), + self); + gtk_widget_realize(GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, + gchar*** arguments, + int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = + my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); + + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, "flags", + G_APPLICATION_NON_UNIQUE, nullptr)); +} diff --git a/linux/runner/my_application.h b/linux/runner/my_application.h new file mode 100644 index 0000000..db16367 --- /dev/null +++ b/linux/runner/my_application.h @@ -0,0 +1,21 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, + my_application, + MY, + APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..c2efd0b --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..724bb2a --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import shared_preferences_foundation + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..43c248c --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,729 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* words999.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "words999.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* words999.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* words999.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/words999.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/words999"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/words999.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/words999"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/words999.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/words999"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..986f242 --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..b3c1761 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000..82b6f9d Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000..13b35eb Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000..0a3f5fa Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000..bdb5722 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000..f083318 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000..326c0e7 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000..2f1632c Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..80e867a --- /dev/null +++ b/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..f6ed06b --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = words999 + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.words999.words999 + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2026 com.example.words999. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 0000000..61f3bd1 --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..1a4ca43 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,346 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + url: "https://pub.dev" + source: hosted + version: "2.13.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" + source: hosted + version: "1.4.1" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" + url: "https://pub.dev" + source: hosted + version: "1.0.9" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + ffi: + dependency: transitive + description: + name: ffi + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + 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" + lints: + dependency: transitive + description: + name: lints + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + url: "https://pub.dev" + source: hosted + version: "0.12.19" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + url: "https://pub.dev" + source: hosted + version: "0.13.0" + meta: + dependency: transitive + description: + name: meta + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + url: "https://pub.dev" + source: hosted + version: "1.18.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" + url: "https://pub.dev" + source: hosted + version: "2.1.3" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + 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" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf + url: "https://pub.dev" + source: hosted + version: "2.5.5" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "0634e64bd719f89c012f392938e173521f535d3ecaf66558fa94a056d22b5cc7" + url: "https://pub.dev" + source: hosted + version: "2.4.27" + 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: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" + url: "https://pub.dev" + source: hosted + version: "2.4.2" + 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" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" + source: hosted + version: "1.10.2" + 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" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + url: "https://pub.dev" + source: hosted + version: "0.7.11" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" + url: "https://pub.dev" + source: hosted + version: "15.3.0" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" +sdks: + dart: ">=3.12.2 <4.0.0" + flutter: ">=3.44.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..868d4cf --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,90 @@ +name: words999 +description: "A new Flutter project." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +# In Windows, build-name is used as the major, minor, and patch parts +# of the product and file versions while build-number is used as the build suffix. +version: 1.0.0+1 + +environment: + sdk: ^3.12.2 + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.8 + shared_preferences: ^2.5.5 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^6.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/to/asset-from-package + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/to/font-from-package diff --git a/scripts/build_symbolic_oracle_data.py b/scripts/build_symbolic_oracle_data.py new file mode 100644 index 0000000..e3f9ae6 --- /dev/null +++ b/scripts/build_symbolic_oracle_data.py @@ -0,0 +1,384 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Script to build the Oracle 999 dataset with rich symbolic/archetypal descriptions. +- Replaces duplicate concepts: 'мама' (keeping 'мать'), 'папа' (keeping 'отец'). +- Replaces narrow/modern mundane words: 'немец' -> 'иностранец', 'журнал' -> 'летопись', 'газета' -> 'вестник', 'процент' -> 'доля', 'рубль' -> 'богатство', 'километр' -> 'расстояние', 'миллион' -> 'множество'. +- Generates deep symbolic/divination meaning ('description') for all 1000 words (000 to 999). +""" + +import urllib.request +import zipfile +import io +import json +import re + +print("Loading frequency dictionary...") + +try: + url = 'http://dict.ruslang.ru/Freq2011.zip' + req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) + content = urllib.request.urlopen(req, timeout=10).read() + z = zipfile.ZipFile(io.BytesIO(content)) + text = z.read('freqrnc2011.csv').decode('utf-8') + lines = text.strip().split('\n')[1:] + entries = [] + for line in lines: + parts = line.strip().split('\t') + if len(parts) >= 3: + lemma, pos, freq = parts[0], parts[1], float(parts[2]) + entries.append((lemma, pos, freq)) + entries.sort(key=lambda x: x[2], reverse=True) + print(f"Loaded {len(entries)} raw entries from RNC.") +except Exception as e: + print(f"Fallback to internal parsing: {e}") + entries = [] + +pos_map = { + 's': 'существительное', + 'v': 'глагол', + 'a': 'прилагательное', + 'adv': 'наречие', + 'spro': 'местоимение', + 'apro': 'местоименное прил.', + 'pr': 'предлог', + 'conj': 'союз', + 'part': 'частица', + 'num': 'числительное', + 'intj': 'междометие', + 'parenth': 'вводное слово', + 'advpro': 'наречие-местоимение', + 'praed': 'предикатив', +} + +category_map = { + 's': 'Образ / Архетип', + 'v': 'Действие / Трансформация', + 'a': 'Свойство / Качество', + 'adv': 'Вектор / Обстоятельство', + 'spro': 'Фокус сознания', + 'apro': 'Определение', + 'pr': 'Связь / Направление', + 'conj': 'Узел / Отношение', + 'part': 'Импульс / Оттенок', + 'num': 'Числовой код', + 'intj': 'Всплеск энергии', + 'parenth': 'Знак внимания', + 'advpro': 'Направление', + 'praed': 'Состояние бытия', +} + +word_replacements = { + 'мама': 'мудрость', # duplicate of мать -> replaced with archetype + 'папа': 'закон', # duplicate of отец -> replaced with archetype + 'немец': 'иностранец', # replaced narrow word with archetype of stranger/foreigner + 'журнал': 'летопись', # replaced modern paper object with chronicle/record of destiny + 'газета': 'вестник', # replaced modern paper with herald/messenger + 'рубль': 'сокровище', # replaced fiat currency with archetype of treasure + 'доллар': 'дар', # replaced fiat currency with archetype of gift/exchange + 'процент': 'мера', # replaced percent with archetype of measure/portion + 'километр': 'путь', # duplicate measure -> replaced with sacred path + 'килограмм': 'тяжесть', # replaced with weight/gravity + 'автобус': 'караван', # replaced modern vehicle with caravan/collective journey + 'машина': 'механизм', # replaced car/machine with mechanism of fate + 'компьютер': 'разум', # replaced modern tech with mind/intellect + 'телевизор': 'морок', # replaced TV with illusion/mirage + 'телефон': 'зов', # replaced phone with call/invocation + 'квартира': 'обитель', # replaced apartment with sanctuary/dwelling + 'кабинет': 'чертог', # replaced office room with sacred chamber + 'документ': 'грамота', # replaced document with sacred decree/scroll + 'паспорт': 'печать', # replaced passport with mark/seal of identity + 'директор': 'наставник', # replaced director with mentor/guide + 'милиция': 'стража', # replaced militia with guardian/sentinel + 'полиция': 'страж', # replaced police with sentinel + 'президент': 'правитель', # replaced president with sovereign/ruler + 'секретарь': 'писарь', # replaced secretary with scribe + 'статья': 'заповедь', # replaced article with principle/covenant +} + +symbolic_dict = { + 'мать': 'Первозданное Лоно, безусловное принятие, рождение формы и защита. Символ плодородия, истока жизненной силы и материи бытия.', + 'отец': 'Закон, Высшая Воля, структура и духовный ориентир. Символизирует внутренний стержень, защиту границ и утверждение истины.', + 'иностранец': 'Встреча с Неведомым, выход за рамки привычного мира. Символизирует чужеродный взгляд, послание издалека или необходимость адаптации.', + 'летопись': 'Скрижали судьбы, память времени, фиксация уроков. Указывает на кармические связи, непрерывность пути и мудрость прошлого.', + 'вестник': 'Внезапное знамение, озарение, знак свыше. Символизирует скорые перемены и необходимость быть чутким к знакам мира.', + 'сокровище': 'Истинная ценность, духовный дар, скрытый потенциал. Олицетворяет то, что питает душу и требует бережного хранения.', + 'механизм': 'Закономерность причин и следствий, цикличность. Указывает на процессы, развивающиеся по строгим скрытым правилам.', + 'обитель': 'Внутреннее святилище, безопасность, сокровенный покой. Место восстановления сил и укоренения души.', + 'чертог': 'Пространство принятия важных решений, тайный совет. Символизирует внутреннюю зрелость и концентрацию воли.', + 'печать': 'Нерушимый завет, закрепленный выбор, знак судьбы. Символизирует окончательность принятого решения.', + 'страж': 'Граница между мирами, защита священного, проверка готовности. Указывает на испытание перед входом на новый уровень.', + 'правитель': 'Власть над собственной судьбой, суверенитет духа, ответственность за выбор и способность вести за собой.', + 'заповедь': 'Нравственный закон, высшее наставление, нерушимый компас в моменты смуты и сомнений.', + 'мудрость': 'Глубинное понимание сути вещей, созерцание без осуждения, плод прожитого и осознанного опыта.', + 'закон': 'Космический порядок, баланс причин и следствий, справедливость мироздания.', + 'дар': 'Благодать, неожиданная помощь свыше, талант или возможность, требующая бескорыстного раскрытия.', + 'мера': 'Чувство гармонии, золотая середина, предупреждение от крайностей и излишеств.', + 'разум': 'Свет различения, ясность восприятия, способность видеть сквозь иллюзии и туман эмоций.', + 'зов': 'Пробуждение души, импульс к началу пути, зов предназначения, требующий ответа.', + 'стража': 'Неусыпный контроль, бдительность сознания, защита внутреннего мира от деструктивных влияний.', + 'жизнь': 'Вечный ток бытия, непрерывное развитие, витальная энергия и способность к исцелению.', + 'смерть': 'Великая трансформация, завершение цикла, освобождение от старой формы ради перерождения.', + 'любовь': 'Высшая связующая сила вселенной, растворение эго, целительный свет и благословение.', + 'огонь': 'Очищающее пламя, страсть, трансформация, разрушение иллюзий и горение духа.', + 'вода': 'Поток эмоций, интуиция, глубинная память, очищение и способность огибать любые преграды.', + 'земля': 'Опора, материализация намерений, устойчивость, терпение и накопление сил.', + 'воздух': 'Мысль, свобода, дыхание жизни, свежее вдохновение и легкость перемен.', + 'свет': 'Истина, осознанность, рассеяние тьмы, откровение и ясность пути.', + 'тьма': 'Скрытый потенциал, неизведанное, время вызревания плода и глубокого внутреннего погружения.', + 'солнце': 'Ясный центр самости, радость, витальность, триумф духа и проявленное лидерство.', + 'луна': 'Мир подсознания, сны, интуитивные предчувствия, приливы и отливы внутреннего моря.', + 'звезда': 'Путеводный ориентир, надежда, высшая цель, связь с вечностью и вера в невозможное.', + 'дорога': 'Странствие души, процесс поиска, динамика судьбы и неизбежность движения вперед.', + 'путь': 'Личное предназначение, духовная траектория, верность своему высшему призванию.', + 'порог': 'Точка невозврата, переход между состояниями, испытание веры перед новым этапом.', + 'дом': 'Центр вселенной человека, корень рода, безопасность и внутренний мир.', + 'храм': 'Связь с сакральным, место молитвы и благоговения, тишина внутри хаоса.', + 'зеркало': 'Отражение истинного «Я», беспристрастный свидетель, разоблачение самообмана.', + 'сердце': 'Центр чувств и духовного знания, компас истинных стремлений души.', + 'душа': 'Бессмертная искра сознания, вместилище глубинного опыта и связи с Источником.', + 'время': 'Великий уравнитель, поток изменений, вызревание плодов и проверка намерений на прочность.', + 'слово': 'Творящий логос, материализация мысли, сила обещания и заклинание реальности.', + 'рука': 'Творческое действие, помощь, способность брать и отдавать, жест созидания.', + 'глаз': 'Видение сути, наблюдатель, прозрение и всевидящее око высшего разума.', + 'дверь': 'Возможность, тайный проход, открытие нового пространства или необходимость закрыть прошлое.', + 'ключ': 'Разгадка тайны, решение проблемы, доступ к закрытым знаниям и ресурсам.', + 'меч': 'Различение добра и зла, отсечение лишнего, сила правды и решительность воли.', + 'щит': 'Внутренняя защита, нерушимость веры, сбережение энергии от внешних атак.', + 'ветер': 'Неуловимые перемены, дыхание духа, освобождение от застоя и свежие веяния.', + 'буря': 'Кризис очищения, катарсис, сокрушение старых опор ради прорыва.', + 'лес': 'Лабиринт подсознания, древние тайны, испытание неизвестностью и единение с природой.', + 'гора': 'Вершина духа, преодоление трудностей, взгляд с высоты и непоколебимость.', + 'река': 'Непрерывное течение событий, принятие перемен, доверие потоку жизни.', + 'море': 'Бездна возможностей, первозданный хаос, океан мудрости и таинственная глубина.', + 'птица': 'Полет мысли, вести с тонкого плана, освобождение от земной тяжести.', + 'древо': 'Ось мира, связь корней (предков) и кроны (будущего), непрерывный рост.', + 'семя': 'Скрытый потенциал, замысел, требующий времени и терпения для прорастания.', + 'плод': 'Результат усилий, завершение процесса, награда за труд или горький опыт.', + 'камень': 'Незыблемость, прочность, фундамент, но и предупреждение о косности и закостенелости.', + 'хлеб': 'Насущная пища, насыщение потребностей, благодарность за простые дары бытия.', + 'золото': 'Чистота духа, нетленность ценностей, алхимическое совершенство.', + 'серебро': 'Лунная интуиция, чистота помыслов, тонкая восприимчивость и защита.', + 'тень': 'Вытесненные аспекты личности, скрытые страхи, таящие в себе нераскрытую силу.', + 'мост': 'Преодоление разделения, объединение противоположностей, диалог и примирение.', + 'сон': 'Послание бессознательного, предвидение, состояние растворения иллюзий плотного мира.', + 'тишина': 'Пространство зарождения истины, глубокий покой, слух, обращенный внутрь себя.', + 'голос': 'Проявление индивидуальности, смелость заявить о себе, звучание правды.', + 'друг': 'Родственная душа, зеркало верности, соратник в духовных поисках.', + 'враг': 'Катализатор роста, безжалостное зеркало слабостей, стимул к укреплению духа.', + 'ребенок': 'Первозданная чистота, спонтанность, начало нового цикла, искренняя вера в чудо.', + 'старик': 'Мудрость завершения, совет предков, угасание формы и торжество понимания.', + 'странник': 'Душа в поиске истины, непривязанность к земному, свобода выбора направления.', + 'мастер': 'Зрелость навыка, осознанное созидание, передача тайного знания.', + 'быть': 'Первичное присутствие, манифестация существования, утверждение «Я ЕСМЬ».', + 'знать': 'Внутреннее ведение, соприкосновение с истиной, выход из иллюзий неведения.', + 'видеть': 'Ясновидение, способность различать скрытую суть явлений за внешней оболочкой.', + 'слышать': 'Восприимчивость к знакам мира, тонкая чуткость к интуиции и советам свыше.', + 'говорить': 'Манифестация намерения, передача вибрации, ответственность за произнесенное.', + 'идти': 'Непрерывное следование своему пути, преодоление инерции и сомнений.', + 'стоять': 'Непоколебимость, верность принципам, стойкость в бурях и сохранение центра.', + 'любить': 'Раскрытие сердца, соединение с Источником, трансформация через бескорыстие.', + 'хотеть': 'Импульс желания, топливо для движения, но и проверка на истинность потребности.', + 'думать': 'Ментальная алхимия, структурирование хаоса, поиск верных решений.', + 'делать': 'Заземление замысла, физическое воплощение идей в плотный мир.', + 'жить': 'Полнота проживания каждого мига, принятие всех граней земного опыта.', + 'умереть': 'Сбрасывание отжившей оболочки, переход на иной вибрационный уровень.', + 'ждать': 'Священное терпение, доверие космическим ритмам созревания плода.', + 'искать': 'Духовный поиск, жажда познания, готовность к открытиям и сомнениям.', + 'найти': 'Обретение ответа, награда за упорство, встреча с предназначенным.', + 'давать': 'Щедрость духа, запуск круговорота изобилия, освобождение от жадности.', + 'брать': 'Принятие даров судьбы, умение вместить благодать и оценить предложенное.', + 'помнить': 'Связь с корнями, интеграция прошлого опыта, уважение к урокам судьбы.', + 'забыть': 'Освобождение от груза прошлого, прощение, очищение ментального пространства.', + 'верить': 'Связь с невидимым, опора на высшие законы, маяк во тьме неизвестности.', + 'бояться': 'Сигнал границы комфорта, тень, требующая осознания и освещения светом разума.', + 'просить': 'Смирение эго, признание нужды в Высшей поддержке, раскрытие готовности принять.', + 'простить': 'Развязывание кармических узлов, возвращение своей энергии, исцеление сердца.', + 'строить': 'Созидание долговременного, упорный труд, закладывание фундамента будущего.', + 'разрушить': 'Очищение площадки для нового, сокрушение ложных идолов и отживших структур.', + 'молчать': 'Накопление силы, охрана тайны, благоговение перед величием момента.', + 'смеяться': 'Легкость духа, победа над страхом, целебная радость бытия.', + 'плакать': 'Очищение эмоциональных ран, отпускание боли, рождение новой мягкости.', + 'начинать': 'Священный импульс старта, нулевая точка творения, закладка зерна.', + 'кончать': 'Подведение итогов, интеграция уроков, закрытие портала и завершение главы.', + 'расти': 'Органическое расширение сознания, преодоление ограничений, тяга к Свету.', + 'я': 'Центр осознания, точка сборки реальности, личная воля и ответственность.', + 'ты': 'Зеркало, партнер, божественное «Ты», встреча с другим мирозданием.', + 'мы': 'Единство душ, соборность, синергия сил и разделенная судьба.', + 'он': 'Внешний фактор, мужской аспект ситуации, сторонний наблюдатель.', + 'она': 'Интуитивный аспект ситуации, женская таинственная энергия, вдохновение.', + 'оно': 'Суть явления, безличный закон, нейтральная сила природы.', + 'они': 'Окружение, коллективное поле, внешний социум и родовые связи.', + 'все': 'Полнота охвата, целостность, космический синтез всех элементов.', + 'ничто': 'Первозданная пустота (Шуньята), потенциал непроявленного бытия.', + 'в': 'Вектор глубокого погружения внутрь, тайное пространство, переход в скрытую суть.', + 'из': 'Вектор исхода, освобождение, исток реки, рождение из первопричины.', + 'к': 'Устремление к цели, притяжение, сближение и поиск соприкосновения.', + 'от': 'Дистанцирование, защита границ, завершение контакта или отправная точка.', + 'на': 'Манифестация на поверхности, опора, явное проявление перед миром.', + 'с': 'Союз, сотворчество, совместное преодоление и синергия энергий.', + 'без': 'Отказ от лишнего, аскеза, обнаженная суть без украшений.', + 'под': 'Скрытое влияние, тайные мотивы, невидимая опора или бремя ответственности.', + 'над': 'Высший надзор, выход в мета-позицию, доминирование духа над материей.', + 'за': 'Поддержка из-за спины, скрытая причина или то, что ждет за горизонтом.', + 'до': 'Предел, граница терпения, священный рубеж перед трансформацией.', + 'после': 'Последствия выбора, сбор плодов, новое состояние после грозы.', + 'и': 'Гармоничный синтез, объединение полярностей, непрерывность связи.', + 'а': 'Тонкое различение, контрапункт, осознание различий без вражды.', + 'но': 'Препятствие для проверки воли, скрытое условие, развилка судьбы.', + 'или': 'Священный выбор, развилка дорог, тест на зрелость и самостоятельность.', + 'да': 'Благословение вселенной, согласие с потоком, зеленый свет действию.', + 'нет': 'Сакральный запрет, защита от ложного пути, необходимость остановиться.', + 'не': 'Отрицание, необходимость отсечь иллюзию или обратить взор на противоположное.', + 'уже': 'Свершившийся факт, необратимость времени, плод уже созрел.', + 'еще': 'Время для подготовки, шанс доделать начатое, незавершенный цикл.', + 'здесь': 'Точка абсолютного присутствия, единственный момент, где есть сила.', + 'там': 'Горизонт устремлений, проекция надежд или иллюзия будущего.', + 'сейчас': 'Вечное настоящее, врата в безмолвие, момент принятия решения.', + 'всегда': 'Вечность, непреложная константа духа, космический закон.', + 'никогда': 'Абсолютный рубеж, невозможность возврата, закрытая дверь.', + 'вдруг': 'Синхроничность, внезапное вмешательство высших сил, разрыв шаблона.', +} + +def generate_symbolic_desc(word, pos_ru, raw_pos): + w_lower = word.lower() + if w_lower in symbolic_dict: + return symbolic_dict[w_lower] + + if raw_pos == 's': + return f"Сакральный символ («{word}»): архетипический образ в поле судьбы. Олицетворяет ключевую фигуру, предмет силы или сферу кристаллизации вашего опыта в текущем вопросе." + elif raw_pos == 'v': + return f"Вектор трансформации («{word}»): активный процесс духовной динамики. Указывает на действие, необходимое для восстановления баланса или прорыва через застой." + elif raw_pos == 'a': + return f"Качество энергии («{word}»): скрытая окраска ситуации. Отражает вибрационное состояние пространства, истинный мотив или свойство, которое важно проявить." + elif raw_pos == 'adv' or raw_pos == 'advpro': + return f"Модус судьбы («{word}»): указатель темпа и характера развертывания событий. Показывает, как именно и с каким настроем раскрывается ситуация." + elif raw_pos == 'spro' or raw_pos == 'apro': + return f"Фокус осознания («{word}»): точка концентрации воли. Указывает, на кого или на какой аспект направлена главная энергия расклада." + elif raw_pos == 'pr': + return f"Вектор связи («{word}»): пространственно-временная направленность силы между элементами вашей ситуации." + elif raw_pos == 'conj': + return f"Узел отношений («{word}»): принцип соединения явлений, показывающий характер перехода между причиной и следствием." + elif raw_pos == 'part': + return f"Импульс модальности («{word}»): тонкий нюанс восприятия, подчеркивающий скрытый фокус внимания." + elif raw_pos == 'num': + return f"Числовой код («{word}»): сакральная мера количества, циклов или порядка проявления событий." + else: + return f"Символический ключ («{word}»): знак в оракульной матрице, несущий скрытое послание для синхронистичного осмысления." + +top_1000 = [] +seen = set() + +for lemma, raw_pos, freq in entries: + w = lemma.strip().lower() + if not w or len(w) == 0: + continue + + if w in word_replacements: + w = word_replacements[w] + + if w in seen: + continue + + if w in ['мама', 'папа', 'немец', 'журнал']: + continue + + seen.add(w) + pos = pos_map.get(raw_pos, raw_pos) + cat = category_map.get(raw_pos, 'Сакральный символ') + + top_1000.append({ + 'baseId': len(top_1000), + 'word': w, + 'pos': pos, + 'raw_pos': raw_pos, + 'category': cat, + 'freq': round(freq, 1), + }) + + if len(top_1000) == 1000: + break + +sacred_pad_words = [ + ('летопись', 'существительное', 's', 'Образ / Архетип', 85.0), + ('вестник', 'существительное', 's', 'Образ / Архетип', 84.0), + ('сокровище', 'существительное', 's', 'Образ / Архетип', 83.0), + ('обитель', 'существительное', 's', 'Образ / Архетип', 82.0), + ('чертог', 'существительное', 's', 'Образ / Архетип', 81.0), + ('печать', 'существительное', 's', 'Образ / Архетип', 80.0), + ('страж', 'существительное', 's', 'Образ / Архетип', 79.0), + ('заповедь', 'существительное', 's', 'Образ / Архетип', 78.0), + ('мудрость', 'существительное', 's', 'Образ / Архетип', 77.0), + ('дар', 'существительное', 's', 'Образ / Архетип', 76.0), + ('мера', 'существительное', 's', 'Образ / Архетип', 75.0), + ('разум', 'существительное', 's', 'Образ / Архетип', 74.0), + ('зов', 'существительное', 's', 'Образ / Архетип', 73.0), + ('стража', 'существительное', 's', 'Образ / Архетип', 72.0), + ('тайна', 'существительное', 's', 'Образ / Архетип', 71.0), + ('судьба', 'существительное', 's', 'Образ / Архетип', 70.0), + ('звезда', 'существительное', 's', 'Образ / Архетип', 69.0), + ('солнце', 'существительное', 's', 'Образ / Архетип', 68.0), + ('луна', 'существительное', 's', 'Образ / Архетип', 67.0), + ('огонь', 'существительное', 's', 'Образ / Архетип', 66.0), + ('вода', 'существительное', 's', 'Образ / Архетип', 65.0), + ('земля', 'существительное', 's', 'Образ / Архетип', 64.0), + ('воздух', 'существительное', 's', 'Образ / Архетип', 63.0), + ('порог', 'существительное', 's', 'Образ / Архетип', 62.0), + ('ключ', 'существительное', 's', 'Образ / Архетип', 61.0), + ('замок', 'существительное', 's', 'Образ / Архетип', 60.0), + ('зеркало', 'существительное', 's', 'Образ / Архетип', 59.0), + ('древо', 'существительное', 's', 'Образ / Архетип', 58.0), + ('семя', 'существительное', 's', 'Образ / Архетип', 57.0), + ('мост', 'существительное', 's', 'Образ / Архетип', 56.0), +] + +for w, pos, raw_pos, cat, freq in sacred_pad_words: + if len(top_1000) >= 1000: + break + if w not in seen: + seen.add(w) + top_1000.append({ + 'baseId': len(top_1000), + 'word': w, + 'pos': pos, + 'raw_pos': raw_pos, + 'category': cat, + 'freq': freq, + }) + +print(f"Total curated words: {len(top_1000)}") + +dart_lines = [] +dart_lines.append("// AUTO-GENERATED: 1000 Oracle & Divination Russian Words Dataset (000 to 999)") +dart_lines.append("// Sacred Lexicon with Archetypal and Symbolic Interpretations") +dart_lines.append("import '../models/word_model.dart';\n") +dart_lines.append("const List kRussianTop1000Words = [") + +for idx, item in enumerate(top_1000): + w = item['word'] + pos = item['pos'] + raw_pos = item['raw_pos'] + cat = item['category'] + freq = item['freq'] + desc = generate_symbolic_desc(w, pos, raw_pos) + + w_clean = w.replace('"', '\\"') + pos_clean = pos.replace('"', '\\"') + cat_clean = cat.replace('"', '\\"') + desc_clean = desc.replace('"', '\\"') + + dart_lines.append(" WordItem(") + dart_lines.append(f" id: {idx},") + dart_lines.append(f" word: \"{w_clean}\",") + dart_lines.append(f" partOfSpeech: \"{pos_clean}\",") + dart_lines.append(f" frequency: {freq},") + dart_lines.append(f" category: \"{cat_clean}\",") + dart_lines.append(f" description: \"{desc_clean}\",") + dart_lines.append(" ),") + +dart_lines.append("];\n") + +with open('lib/data/words_data.dart', 'w', encoding='utf-8') as f: + f.write('\n'.join(dart_lines)) + +print("Wrote lib/data/words_data.dart successfully with 1000 items!") diff --git a/scripts/generate_words.py b/scripts/generate_words.py new file mode 100644 index 0000000..6fb3491 --- /dev/null +++ b/scripts/generate_words.py @@ -0,0 +1,208 @@ +import urllib.request +import zipfile +import io +import json + +print("Fetching RNC frequency dictionary...") +url = 'http://dict.ruslang.ru/Freq2011.zip' +req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) +content = urllib.request.urlopen(req).read() +z = zipfile.ZipFile(io.BytesIO(content)) +text = z.read('freqrnc2011.csv').decode('utf-8') +lines = text.strip().split('\n')[1:] + +entries = [] +for line in lines: + parts = line.strip().split('\t') + if len(parts) >= 3: + lemma, pos, freq = parts[0], parts[1], float(parts[2]) + entries.append((lemma, pos, freq)) + +entries.sort(key=lambda x: x[2], reverse=True) + +pos_map = { + 's': 'существительное', + 'v': 'глагол', + 'a': 'прилагательное', + 'adv': 'наречие', + 'spro': 'местоимение', + 'apro': 'местоименное прил.', + 'pr': 'предлог', + 'conj': 'союз', + 'part': 'частица', + 'num': 'числительное', + 'intj': 'междометие', + 'parenth': 'вводное слово', + 'advpro': 'наречие-местоимение', + 'praed': 'предикатив', +} + +category_map = { + 's': 'Предмет / Понятие', + 'v': 'Действие / Состояние', + 'a': 'Признак / Свойство', + 'adv': 'Обстоятельство', + 'spro': 'Местоимение', + 'apro': 'Определение', + 'pr': 'Предлог', + 'conj': 'Союз', + 'part': 'Частица', + 'num': 'Число / Количество', + 'intj': 'Эмоция / Восклицание', + 'parenth': 'Вводная конструкция', + 'advpro': 'Обстоятельство', + 'praed': 'Состояние', +} + +seen = {} +top_1000 = [] + +# First entry #000: 'ноль' or 'начало' or top seed +# Let's include 1000 words with IDs 0 to 999 (where 000 can be 'ноль' or top 1000 lemmas starting with 0..999) +# If 0..999, let's map top 1000 frequency words so index 0 is #000, 1 is #001 ... 999 is #999! +for lemma, raw_pos, freq in entries: + if lemma not in seen and len(lemma) > 0: + seen[lemma] = True + pos = pos_map.get(raw_pos, raw_pos) + cat = category_map.get(raw_pos, 'Общее') + top_1000.append({ + 'id': len(top_1000), # 0 .. 999 + 'word': lemma, + 'pos': pos, + 'raw_pos': raw_pos, + 'category': cat, + 'freq': round(freq, 1), + }) + if len(top_1000) == 1000: + break + +print(f"Generated {len(top_1000)} words (IDs {top_1000[0]['id']} to {top_1000[-1]['id']}).") + +custom_examples = { + 'и': ('Мы читали книги и слушали музыку.', 'Соединительный союз, связывает однородные члены или предложения.'), + 'в': ('Мы вошли в просторную комнату.', 'Предлог, указывает на нахождение внутри или направление движения.'), + 'не': ('Он не ожидал такого быстрого ответа.', 'Отрицательная частица, служит для отрицания действия или признака.'), + 'на': ('Книга лежит на рабочем столе.', 'Предлог, указывает на поверхность или направление.'), + 'я': ('Я с радостью помогу тебе с этим проектом.', 'Личное местоимение 1-го лица единственного числа.'), + 'быть': ('Быть или не быть — вот в чём вопрос.', 'Глагол существования, бытия или связка в предложении.'), + 'он': ('Он всегда держит своё слово.', 'Личное местоимение 3-го лица мужского рода.'), + 'с': ('Мы пошли на прогулку с друзьями.', 'Предлог совместности, орудия действия или образа.'), + 'что': ('Я знаю, что ты справишься отлично.', 'Относительное местоимение или подчинительный союз.'), + 'а': ('Один читал, а другой слушал.', 'Противительный союз, выражающий сопоставление.'), + 'по': ('Мы не спеша гуляли по вечернему парку.', 'Предлог, указывает на поверхность перемещения или соответствие.'), + 'это': ('Это самый важный момент нашего путешествия.', 'Указательное местоимение, обозначает предмет или ситуацию.'), + 'она': ('Она великолепно играет на фортепиано.', 'Личное местоимение 3-го лица женского рода.'), + 'этот': ('Этот день запомнится надолго.', 'Указательное местоимение-прилагательное.'), + 'к': ('Поезд плавно приближался к перрону.', 'Предлог направления, обращенности к кому-то или чему-то.'), + 'но': ('Было трудно, но мы достигли цели.', 'Противительный союз, выражающий ограничение или противопоставление.'), + 'они': ('Они вместе разработали новый алгоритм.', 'Личное местоимение 3-го лица множественного числа.'), + 'мы': ('Мы уверены в успехе нашего дела.', 'Личное местоимение 1-го лица множественного числа.'), + 'как': ('Он работал быстро, как настоящий мастер.', 'Сравнительный союз, наречие или союзное слово.'), + 'из': ('Он достал старую книгу из шкафа.', 'Предлог, указывает на источник, происхождение или исходное место.'), + 'у': ('У нас есть всё необходимое для старта.', 'Предлог принадлежности или нахождения рядом.'), + 'который': ('Человек, который ищет, всегда найдёт.', 'Определительное местоимение, связывает части сложного предложения.'), + 'то': ('Если погода будет хорошей, то мы поедем за город.', 'Указательное местоимение или союзная частица.'), + 'за': ('Спасибо за твою поддержку и добрые слова.', 'Предлог причины, цели, следования или расположения позади.'), + 'свой': ('Каждый мастер любит своё ремесло.', 'Притяжательное местоимение, указывает на принадлежность субъекту.'), + 'весь': ('Весь день светило яркое солнце.', 'Определительное местоимение, означает полный охват или совокупность.'), + 'год': ('Этот год принёс много полезных открытий.', 'Промежуток времени, равный 12 месяцам.'), + 'от': ('Письмо пришло от старого друга.', 'Предлог удаления, источника, причины или авторства.'), + 'так': ('Он сделал всё так, как договаривались.', 'Указательное наречие образа действия.'), + 'о': ('Мы говорили о планах на будущее.', 'Предлог, указывает на предмет мысли или речи.'), + 'один': ('Один в поле не воин, но вместе мы сила.', 'Числительное или местоимение со значением единичности.'), + 'сказать': ('Он хотел сказать нечто очень важное.', 'Выразить мысль словами вслух.'), + 'мочь': ('Каждый может научиться новому навыку.', 'Иметь физическую или практическую возможность сделать что-либо.'), + 'человек': ('Человек познаёт мир через опыт и знания.', 'Живое разумное существо, индивид.'), + 'такой': ('Такой результат превзошёл все ожидания.', 'Указательное местоимение со значением качества или подобия.'), + 'только': ('Осталось решить только одну задачу.', 'Ограничительная частица со значением исключительности.'), + 'себя': ('Нужно верить в себя и свои силы.', 'Возвратное местоимение, указывает на лицо субъекта.'), + 'время': ('Время летит незаметно, когда занят любимым делом.', 'Форма протекания процессов и длительности событий.'), + 'дело': ('Каждое доброе дело имеет значение.', 'Занятие, деятельность, работа или конкретный вопрос.'), + 'жизнь': ('Жизнь полна удивительных возможностей.', 'Форма существования материи, бытие человека.'), + 'день': ('Сегодня прекрасный солнечный день.', 'Сутки или светлое время суток.'), + 'рука': ('Он протянул руку помощи товарищу.', 'Верхняя конечность человека или символ поддержки.'), + 'работа': ('Качественная работа всегда ценится высоко.', 'Трудовая деятельность, процесс создания чего-либо.'), + 'слово': ('Доброе слово и кошке приятно.', 'Единица языка, служащая для наименования понятий.'), + 'место': ('Это место идеально подходит для отдыха.', 'Пространство или пункт нахождения.'), + 'глаз': ('Его глаза светились искренней радостью.', 'Орган зрения человека или животного.'), + 'лицо': ('На его лице появилась тёплая улыбка.', 'Передняя часть головы или облик человека.'), + 'друг': ('Верный друг познаётся в беде и радости.', 'Близкий человек, связанный взаимным доверием.'), + 'дом': ('Дом — это место, где тебя всегда ждут.', 'Жилое здание или уютное семейное пространство.'), + 'знать': ('Важно знать свои сильные стороны.', 'Обладать информацией, опытом или пониманием.'), + 'думать': ('Полезно глубоко думать над сложными задачами.', 'Мыслить, размышлять, иметь мнение.'), + 'хороший': ('Хороший совет помогает принять верное решение.', 'Обладающий положительными качествами.'), + 'новый': ('Новый проект открывает большие горизонты.', 'Впервые созданный, современный, недавно появившийся.'), + 'большой': ('Большой успех складывается из малых шагов.', 'Значительный по размеру, объёму или влиянию.'), +} + +def get_example_and_desc(item): + w = item['word'] + p = item['raw_pos'] + pos_ru = item['pos'] + + if w in custom_examples: + return custom_examples[w] + + if p == 'v': + desc = f'Глагол, выражает действие или состояние ({w}).' + ex = f'Нужно вовремя {w}, чтобы достичь желаемого результата.' + elif p == 's': + desc = f'Существительное ({pos_ru}), обозначает предмет, лицо или абстрактное понятие.' + ex = f'Внимание к такому понятию, как «{w}», имеет ключевое значение.' + elif p == 'a': + desc = f'Прилагательное ({pos_ru}), описывает признак, свойство или качество.' + ex = f'Это был действительно {w} выбор для всей команды.' + elif p == 'adv' or p == 'advpro': + desc = f'Наречие ({pos_ru}), характеризует обстоятельство, степень или образ действия.' + ex = f'Они действовали {w}, добиваясь максимальной точности.' + elif p == 'num': + desc = f'Числительное ({pos_ru}), обозначает количество или порядок при счёте.' + ex = f'В списке значится {w} важных пунктов.' + elif p == 'spro' or p == 'apro': + desc = f'Местоимение ({pos_ru}), указывает на предмет, признак или лицо без называния.' + ex = f'Именно {w} играет решающую роль в этой ситуации.' + elif p == 'pr': + desc = f'Предлог ({pos_ru}), выражает синтаксические отношения между словами.' + ex = f'События развивались {w} заранее намеченному плану.' + elif p == 'conj': + desc = f'Союз ({pos_ru}), связывает слова или части сложного предложения.' + ex = f'Мы продолжили путь, {w} погода способствовала движению.' + elif p == 'part': + desc = f'Частица ({pos_ru}), придает оттенок смысла или модальности.' + ex = f'Это {w} то, о чём мы так долго говорили.' + else: + desc = f'Слово русского языка ({pos_ru}) с высокой частотой употребления.' + ex = f'Слово «{w}» входит в золотой фонд русской лексики.' + + return ex, desc + +dart_code = [] +dart_code.append("// AUTO-GENERATED: 1000 Essential Russian Words Dataset (000 to 999)") +dart_code.append("// Source: Russian National Corpus Frequency Dictionary (Lyashevskaya & Sharoff)") +dart_code.append("import '../models/word_model.dart';\n") +dart_code.append("const List kRussianTop1000Words = [") + +for item in top_1000: + ex, desc = get_example_and_desc(item) + w_clean = item['word'].replace('"', '\\"') + ex_clean = ex.replace('"', '\\"') + desc_clean = desc.replace('"', '\\"') + pos_clean = item['pos'].replace('"', '\\"') + cat_clean = item['category'].replace('"', '\\"') + + dart_code.append(f" WordItem(") + dart_code.append(f" id: {item['id']},") + dart_code.append(f" word: \"{w_clean}\",") + dart_code.append(f" partOfSpeech: \"{pos_clean}\",") + dart_code.append(f" frequency: {item['freq']},") + dart_code.append(f" example: \"{ex_clean}\",") + dart_code.append(f" category: \"{cat_clean}\",") + dart_code.append(f" description: \"{desc_clean}\",") + dart_code.append(f" ),") + +dart_code.append("];\n") + +with open('lib/data/words_data.dart', 'w', encoding='utf-8') as f: + f.write('\n'.join(dart_code)) + +print("Successfully created lib/data/words_data.dart with exactly 1000 words (000..999)!") diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..7c672b5 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,21 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:words999/main.dart'; +import 'package:words999/services/words_repository.dart'; + +void main() { + testWidgets('App smoke test - launch oracle and verify navigation', (WidgetTester tester) async { + SharedPreferences.setMockInitialValues({}); + await WordsRepository().init(); + await tester.pumpWidget(const Words999App()); + await tester.pump(); + await tester.pump(const Duration(milliseconds: 300)); + + // Verify app title and destinations + expect(find.text('Оракул 999'), findsOneWidget); + expect(find.text('Поиск 000..999'), findsOneWidget); + expect(find.text('Расклады'), findsOneWidget); + expect(find.text('Каталог 999'), findsOneWidget); + expect(find.text('История'), findsOneWidget); + }); +} diff --git a/test/words_repository_test.dart b/test/words_repository_test.dart new file mode 100644 index 0000000..fa68dc0 --- /dev/null +++ b/test/words_repository_test.dart @@ -0,0 +1,90 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:words999/models/history_entry_model.dart'; +import 'package:words999/services/words_repository.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('WordsRepository Oracle & Divination Tests', () { + late WordsRepository repo; + + setUp(() async { + SharedPreferences.setMockInitialValues({}); + repo = WordsRepository(); + await repo.init(); + }); + + test('Dataset contains exactly 1000 words with unique randomized session numbers 000 to 999', () { + expect(repo.totalWords, equals(1000)); + expect(repo.allWords.length, equals(1000)); + + final seenSessionNumbers = {}; + for (int i = 0; i <= 999; i++) { + final item = repo.getWordBySessionNumber(i); + expect(item, isNotNull, reason: 'Word with session number $i must exist'); + expect(item!.sessionNumber, equals(i)); + expect(item.formattedSessionNumber.length, equals(3)); + expect(item.word.isNotEmpty, isTrue, reason: 'Word cannot be empty'); + expect(item.description.isNotEmpty, isTrue, reason: 'Symbolic meaning must be present'); + expect(item.partOfSpeech.isNotEmpty, isTrue); + seenSessionNumbers.add(item.sessionNumber); + } + expect(seenSessionNumbers.length, equals(1000)); + }); + + test('Reshuffling changes the order / mapping of words to session numbers', () { + repo.reshuffleSessionNumbers(); + // Verify total count is still 1000 and all numbers 0..999 are present + expect(repo.totalWords, equals(1000)); + for (int i = 0; i < 1000; i++) { + expect(repo.getWordBySessionNumber(i)?.sessionNumber, equals(i)); + } + }); + + test('Search by number string returns correct session word', () { + final results0 = repo.search('0'); + expect(results0.isNotEmpty, isTrue); + expect(results0.first.sessionNumber, equals(0)); + + final results42 = repo.search('42'); + expect(results42.isNotEmpty, isTrue); + expect(results42.first.sessionNumber, equals(42)); + + final results999 = repo.search('999'); + expect(results999.isNotEmpty, isTrue); + expect(results999.first.sessionNumber, equals(999)); + }); + + test('Next and previous word navigation wraps around 000..999', () { + expect(repo.getNextWord(0).sessionNumber, equals(1)); + expect(repo.getNextWord(999).sessionNumber, equals(0)); + expect(repo.getPreviousWord(1).sessionNumber, equals(0)); + expect(repo.getPreviousWord(0).sessionNumber, equals(999)); + }); + + test('History entries can be added, retrieved, and cleared', () async { + await repo.clearHistory(); + expect(repo.history.isEmpty, isTrue); + + final entry = HistoryEntry( + id: '1', + timestamp: DateTime(2026, 8, 31, 12, 0), + word: 'огонь', + sessionNumber: 777, + partOfSpeech: 'существительное', + symbolicMeaning: 'Очищающее пламя трансформации', + readingType: 'Жребий момента', + ); + + await repo.addHistoryEntry(entry); + expect(repo.history.length, equals(1)); + expect(repo.history.first.word, equals('огонь')); + expect(repo.history.first.formattedSessionNumber, equals('777')); + expect(repo.history.first.formattedDate, contains('31.08.2026 12:00:00')); + + await repo.clearHistory(); + expect(repo.history.isEmpty, isTrue); + }); + }); +} diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000..8aaa46a Binary files /dev/null and b/web/favicon.png differ diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000..b749bfe Binary files /dev/null and b/web/icons/Icon-192.png differ diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000..88cfd48 Binary files /dev/null and b/web/icons/Icon-512.png differ diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000..eb9b4d7 Binary files /dev/null and b/web/icons/Icon-maskable-192.png differ diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000..d69c566 Binary files /dev/null and b/web/icons/Icon-maskable-512.png differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..95b6e45 --- /dev/null +++ b/web/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + words999 + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..94b80bf --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "words999", + "short_name": "words999", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 0000000..ca7fc70 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(words999 LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "words999") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8b6d468 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..b93c4c3 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..394917c --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..3d48c8c --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example.words999" "\0" + VALUE "FileDescription", "words999" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "words999" "\0" + VALUE "LegalCopyright", "Copyright (C) 2026 com.example.words999. All rights reserved." "\0" + VALUE "OriginalFilename", "words999.exe" "\0" + VALUE "ProductName", "words999" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..955ee30 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..7a32f32 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"words999", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000..c04e20c Binary files /dev/null and b/windows/runner/resources/app_icon.ico differ diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..153653e --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..3cb7146 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,69 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + // First, find the length of the string with a safe upper bound (CWE-126). + // UNICODE_STRING_MAX_CHARS (32767) is the maximum length of a UNICODE_STRING. + int input_length = static_cast(wcsnlen(utf16_string, UNICODE_STRING_MAX_CHARS)); + // Now use that bounded length to determine the required buffer size. + // When an explicit length is passed, WideCharToMultiByte does not include + // the null terminator in its returned size. + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || static_cast(target_length) > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..60608d0 --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..e901dde --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_