├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── dependabot.yaml
└── workflows
│ ├── checkout.yml
│ ├── deploy.yml
│ ├── example-deploy-production.yml
│ └── example-deploy-staging.yml
├── .gitignore
├── .metadata
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── CHANGELOG.md
├── LICENSE
├── Makefile
├── README.md
├── analysis_options.yaml
├── example
├── .firebase
│ └── hosting.YnVpbGRcd2Vi.cache
├── .firebaserc
├── .gitignore
├── .metadata
├── Makefile
├── README.md
├── analysis_options.yaml
├── android
│ ├── .gitignore
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ └── dev
│ │ │ │ │ └── plugfox
│ │ │ │ │ └── octopus
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-v21
│ │ │ │ ├── background.png
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable
│ │ │ │ ├── background.png
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ │ ├── values-night-v31
│ │ │ │ └── styles.xml
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ ├── values-v31
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── assets
│ ├── data
│ │ ├── categories.json
│ │ ├── images
│ │ │ ├── product-1-1.webp
│ │ │ ├── product-1-2.webp
│ │ │ ├── product-1-3.webp
│ │ │ ├── product-1-4.webp
│ │ │ ├── product-1-thumbnail.webp
│ │ │ ├── product-10-1.webp
│ │ │ ├── product-10-2.webp
│ │ │ ├── product-10-3.webp
│ │ │ ├── product-10-thumbnail.webp
│ │ │ ├── product-100-1.webp
│ │ │ ├── product-100-2.webp
│ │ │ ├── product-100-3.webp
│ │ │ ├── product-100-thumbnail.webp
│ │ │ ├── product-11-1.webp
│ │ │ ├── product-11-2.webp
│ │ │ ├── product-11-3.webp
│ │ │ ├── product-11-thumbnail.webp
│ │ │ ├── product-12-1.webp
│ │ │ ├── product-12-2.webp
│ │ │ ├── product-12-3.webp
│ │ │ ├── product-12-4.webp
│ │ │ ├── product-12-thumbnail.webp
│ │ │ ├── product-13-1.webp
│ │ │ ├── product-13-2.webp
│ │ │ ├── product-13-3.webp
│ │ │ ├── product-13-4.webp
│ │ │ ├── product-13-thumbnail.webp
│ │ │ ├── product-14-1.webp
│ │ │ ├── product-14-2.webp
│ │ │ ├── product-14-3.webp
│ │ │ ├── product-14-thumbnail.webp
│ │ │ ├── product-15-1.webp
│ │ │ ├── product-15-2.webp
│ │ │ ├── product-15-3.webp
│ │ │ ├── product-15-4.webp
│ │ │ ├── product-15-thumbnail.webp
│ │ │ ├── product-16-1.webp
│ │ │ ├── product-16-2.webp
│ │ │ ├── product-16-3.webp
│ │ │ ├── product-16-4.webp
│ │ │ ├── product-16-thumbnail.webp
│ │ │ ├── product-17-1.webp
│ │ │ ├── product-17-2.webp
│ │ │ ├── product-17-3.webp
│ │ │ ├── product-17-thumbnail.webp
│ │ │ ├── product-18-1.webp
│ │ │ ├── product-18-2.webp
│ │ │ ├── product-18-3.webp
│ │ │ ├── product-18-4.webp
│ │ │ ├── product-18-thumbnail.webp
│ │ │ ├── product-19-1.webp
│ │ │ ├── product-19-2.webp
│ │ │ ├── product-19-3.webp
│ │ │ ├── product-19-thumbnail.webp
│ │ │ ├── product-2-1.webp
│ │ │ ├── product-2-2.webp
│ │ │ ├── product-2-3.webp
│ │ │ ├── product-2-thumbnail.webp
│ │ │ ├── product-20-1.webp
│ │ │ ├── product-20-2.webp
│ │ │ ├── product-20-3.webp
│ │ │ ├── product-20-4.webp
│ │ │ ├── product-20-thumbnail.webp
│ │ │ ├── product-21-1.webp
│ │ │ ├── product-21-2.webp
│ │ │ ├── product-21-3.webp
│ │ │ ├── product-21-thumbnail.webp
│ │ │ ├── product-22-1.webp
│ │ │ ├── product-22-2.webp
│ │ │ ├── product-22-3.webp
│ │ │ ├── product-22-thumbnail.webp
│ │ │ ├── product-23-1.webp
│ │ │ ├── product-23-2.webp
│ │ │ ├── product-23-3.webp
│ │ │ ├── product-23-4.webp
│ │ │ ├── product-23-thumbnail.webp
│ │ │ ├── product-24-1.webp
│ │ │ ├── product-24-2.webp
│ │ │ ├── product-24-3.webp
│ │ │ ├── product-24-4.webp
│ │ │ ├── product-24-thumbnail.webp
│ │ │ ├── product-25-1.webp
│ │ │ ├── product-25-2.webp
│ │ │ ├── product-25-3.webp
│ │ │ ├── product-25-4.webp
│ │ │ ├── product-25-thumbnail.webp
│ │ │ ├── product-26-1.webp
│ │ │ ├── product-26-2.webp
│ │ │ ├── product-26-3.webp
│ │ │ ├── product-26-4.webp
│ │ │ ├── product-26-5.webp
│ │ │ ├── product-26-thumbnail.webp
│ │ │ ├── product-27-1.webp
│ │ │ ├── product-27-2.webp
│ │ │ ├── product-27-3.webp
│ │ │ ├── product-27-4.webp
│ │ │ ├── product-27-thumbnail.webp
│ │ │ ├── product-28-1.webp
│ │ │ ├── product-28-2.webp
│ │ │ ├── product-28-3.webp
│ │ │ ├── product-28-4.webp
│ │ │ ├── product-28-thumbnail.webp
│ │ │ ├── product-29-1.webp
│ │ │ ├── product-29-2.webp
│ │ │ ├── product-29-3.webp
│ │ │ ├── product-29-4.webp
│ │ │ ├── product-29-thumbnail.webp
│ │ │ ├── product-3-1.webp
│ │ │ ├── product-3-thumbnail.webp
│ │ │ ├── product-30-1.webp
│ │ │ ├── product-30-2.webp
│ │ │ ├── product-30-3.webp
│ │ │ ├── product-30-thumbnail.webp
│ │ │ ├── product-31-1.webp
│ │ │ ├── product-31-2.webp
│ │ │ ├── product-31-3.webp
│ │ │ ├── product-31-4.webp
│ │ │ ├── product-31-thumbnail.webp
│ │ │ ├── product-32-1.webp
│ │ │ ├── product-32-2.webp
│ │ │ ├── product-32-3.webp
│ │ │ ├── product-32-thumbnail.webp
│ │ │ ├── product-33-1.webp
│ │ │ ├── product-33-2.webp
│ │ │ ├── product-33-3.webp
│ │ │ ├── product-33-4.webp
│ │ │ ├── product-33-thumbnail.webp
│ │ │ ├── product-34-1.webp
│ │ │ ├── product-34-2.webp
│ │ │ ├── product-34-3.webp
│ │ │ ├── product-34-4.webp
│ │ │ ├── product-34-thumbnail.webp
│ │ │ ├── product-35-1.webp
│ │ │ ├── product-35-2.webp
│ │ │ ├── product-35-3.webp
│ │ │ ├── product-35-4.webp
│ │ │ ├── product-35-thumbnail.webp
│ │ │ ├── product-36-1.webp
│ │ │ ├── product-36-2.webp
│ │ │ ├── product-36-3.webp
│ │ │ ├── product-36-4.webp
│ │ │ ├── product-36-thumbnail.webp
│ │ │ ├── product-37-1.webp
│ │ │ ├── product-37-2.webp
│ │ │ ├── product-37-3.webp
│ │ │ ├── product-37-4.webp
│ │ │ ├── product-37-thumbnail.webp
│ │ │ ├── product-38-1.webp
│ │ │ ├── product-38-2.webp
│ │ │ ├── product-38-3.webp
│ │ │ ├── product-38-4.webp
│ │ │ ├── product-38-thumbnail.webp
│ │ │ ├── product-39-1.webp
│ │ │ ├── product-39-2.webp
│ │ │ ├── product-39-3.webp
│ │ │ ├── product-39-4.webp
│ │ │ ├── product-39-thumbnail.webp
│ │ │ ├── product-4-1.webp
│ │ │ ├── product-4-2.webp
│ │ │ ├── product-4-3.webp
│ │ │ ├── product-4-4.webp
│ │ │ ├── product-4-thumbnail.webp
│ │ │ ├── product-40-1.webp
│ │ │ ├── product-40-2.webp
│ │ │ ├── product-40-thumbnail.webp
│ │ │ ├── product-41-1.webp
│ │ │ ├── product-41-2.webp
│ │ │ ├── product-41-3.webp
│ │ │ ├── product-41-4.webp
│ │ │ ├── product-41-thumbnail.webp
│ │ │ ├── product-42-1.webp
│ │ │ ├── product-42-2.webp
│ │ │ ├── product-42-3.webp
│ │ │ ├── product-42-4.webp
│ │ │ ├── product-42-thumbnail.webp
│ │ │ ├── product-43-1.webp
│ │ │ ├── product-43-2.webp
│ │ │ ├── product-43-3.webp
│ │ │ ├── product-43-4.webp
│ │ │ ├── product-43-thumbnail.webp
│ │ │ ├── product-44-1.webp
│ │ │ ├── product-44-2.webp
│ │ │ ├── product-44-3.webp
│ │ │ ├── product-44-4.webp
│ │ │ ├── product-44-thumbnail.webp
│ │ │ ├── product-45-1.webp
│ │ │ ├── product-45-2.webp
│ │ │ ├── product-45-3.webp
│ │ │ ├── product-45-4.webp
│ │ │ ├── product-45-thumbnail.webp
│ │ │ ├── product-46-1.webp
│ │ │ ├── product-46-2.webp
│ │ │ ├── product-46-3.webp
│ │ │ ├── product-46-4.webp
│ │ │ ├── product-46-thumbnail.webp
│ │ │ ├── product-47-1.webp
│ │ │ ├── product-47-2.webp
│ │ │ ├── product-47-3.webp
│ │ │ ├── product-47-thumbnail.webp
│ │ │ ├── product-48-1.webp
│ │ │ ├── product-48-2.webp
│ │ │ ├── product-48-3.webp
│ │ │ ├── product-48-4.webp
│ │ │ ├── product-48-thumbnail.webp
│ │ │ ├── product-49-1.webp
│ │ │ ├── product-49-2.webp
│ │ │ ├── product-49-3.webp
│ │ │ ├── product-49-thumbnail.webp
│ │ │ ├── product-5-1.webp
│ │ │ ├── product-5-2.webp
│ │ │ ├── product-5-3.webp
│ │ │ ├── product-5-thumbnail.webp
│ │ │ ├── product-50-1.webp
│ │ │ ├── product-50-2.webp
│ │ │ ├── product-50-3.webp
│ │ │ ├── product-50-thumbnail.webp
│ │ │ ├── product-51-1.webp
│ │ │ ├── product-51-2.webp
│ │ │ ├── product-51-3.webp
│ │ │ ├── product-51-thumbnail.webp
│ │ │ ├── product-52-1.webp
│ │ │ ├── product-52-2.webp
│ │ │ ├── product-52-3.webp
│ │ │ ├── product-52-4.webp
│ │ │ ├── product-52-thumbnail.webp
│ │ │ ├── product-53-1.webp
│ │ │ ├── product-53-2.webp
│ │ │ ├── product-53-3.webp
│ │ │ ├── product-53-4.webp
│ │ │ ├── product-53-thumbnail.webp
│ │ │ ├── product-54-1.webp
│ │ │ ├── product-54-2.webp
│ │ │ ├── product-54-3.webp
│ │ │ ├── product-54-4.webp
│ │ │ ├── product-54-thumbnail.webp
│ │ │ ├── product-55-1.webp
│ │ │ ├── product-55-2.webp
│ │ │ ├── product-55-3.webp
│ │ │ ├── product-55-4.webp
│ │ │ ├── product-55-thumbnail.webp
│ │ │ ├── product-56-1.webp
│ │ │ ├── product-56-2.webp
│ │ │ ├── product-56-3.webp
│ │ │ ├── product-56-4.webp
│ │ │ ├── product-56-5.webp
│ │ │ ├── product-56-thumbnail.webp
│ │ │ ├── product-57-1.webp
│ │ │ ├── product-57-2.webp
│ │ │ ├── product-57-3.webp
│ │ │ ├── product-57-4.webp
│ │ │ ├── product-57-thumbnail.webp
│ │ │ ├── product-58-1.webp
│ │ │ ├── product-58-2.webp
│ │ │ ├── product-58-3.webp
│ │ │ ├── product-58-4.webp
│ │ │ ├── product-58-thumbnail.webp
│ │ │ ├── product-59-1.webp
│ │ │ ├── product-59-2.webp
│ │ │ ├── product-59-3.webp
│ │ │ ├── product-59-4.webp
│ │ │ ├── product-59-thumbnail.webp
│ │ │ ├── product-6-1.webp
│ │ │ ├── product-6-2.webp
│ │ │ ├── product-6-3.webp
│ │ │ ├── product-6-4.webp
│ │ │ ├── product-6-thumbnail.webp
│ │ │ ├── product-60-1.webp
│ │ │ ├── product-60-2.webp
│ │ │ ├── product-60-3.webp
│ │ │ ├── product-60-thumbnail.webp
│ │ │ ├── product-61-1.webp
│ │ │ ├── product-61-2.webp
│ │ │ ├── product-61-3.webp
│ │ │ ├── product-61-thumbnail.webp
│ │ │ ├── product-62-1.webp
│ │ │ ├── product-62-2.webp
│ │ │ ├── product-62-thumbnail.webp
│ │ │ ├── product-63-1.webp
│ │ │ ├── product-63-2.webp
│ │ │ ├── product-63-3.webp
│ │ │ ├── product-63-4.webp
│ │ │ ├── product-63-thumbnail.webp
│ │ │ ├── product-64-1.webp
│ │ │ ├── product-64-2.webp
│ │ │ ├── product-64-3.webp
│ │ │ ├── product-64-thumbnail.webp
│ │ │ ├── product-65-1.webp
│ │ │ ├── product-65-2.webp
│ │ │ ├── product-65-3.webp
│ │ │ ├── product-65-4.webp
│ │ │ ├── product-65-thumbnail.webp
│ │ │ ├── product-66-1.webp
│ │ │ ├── product-66-2.webp
│ │ │ ├── product-66-3.webp
│ │ │ ├── product-66-thumbnail.webp
│ │ │ ├── product-67-1.webp
│ │ │ ├── product-67-2.webp
│ │ │ ├── product-67-3.webp
│ │ │ ├── product-67-4.webp
│ │ │ ├── product-67-thumbnail.webp
│ │ │ ├── product-68-1.webp
│ │ │ ├── product-68-2.webp
│ │ │ ├── product-68-thumbnail.webp
│ │ │ ├── product-69-1.webp
│ │ │ ├── product-69-2.webp
│ │ │ ├── product-69-3.webp
│ │ │ ├── product-69-4.webp
│ │ │ ├── product-69-thumbnail.webp
│ │ │ ├── product-7-1.webp
│ │ │ ├── product-7-2.webp
│ │ │ ├── product-7-3.webp
│ │ │ ├── product-7-thumbnail.webp
│ │ │ ├── product-70-1.webp
│ │ │ ├── product-70-2.webp
│ │ │ ├── product-70-thumbnail.webp
│ │ │ ├── product-71-1.webp
│ │ │ ├── product-71-2.webp
│ │ │ ├── product-71-3.webp
│ │ │ ├── product-71-thumbnail.webp
│ │ │ ├── product-72-1.webp
│ │ │ ├── product-72-2.webp
│ │ │ ├── product-72-3.webp
│ │ │ ├── product-72-4.webp
│ │ │ ├── product-72-thumbnail.webp
│ │ │ ├── product-73-1.webp
│ │ │ ├── product-73-2.webp
│ │ │ ├── product-73-3.webp
│ │ │ ├── product-73-thumbnail.webp
│ │ │ ├── product-74-1.webp
│ │ │ ├── product-74-2.webp
│ │ │ ├── product-74-3.webp
│ │ │ ├── product-74-4.webp
│ │ │ ├── product-74-thumbnail.webp
│ │ │ ├── product-75-1.webp
│ │ │ ├── product-75-2.webp
│ │ │ ├── product-75-3.webp
│ │ │ ├── product-75-thumbnail.webp
│ │ │ ├── product-76-1.webp
│ │ │ ├── product-76-2.webp
│ │ │ ├── product-76-thumbnail.webp
│ │ │ ├── product-77-1.webp
│ │ │ ├── product-77-2.webp
│ │ │ ├── product-77-3.webp
│ │ │ ├── product-77-thumbnail.webp
│ │ │ ├── product-78-thumbnail.webp
│ │ │ ├── product-79-1.webp
│ │ │ ├── product-79-thumbnail.webp
│ │ │ ├── product-8-1.webp
│ │ │ ├── product-8-2.webp
│ │ │ ├── product-8-3.webp
│ │ │ ├── product-8-4.webp
│ │ │ ├── product-8-thumbnail.webp
│ │ │ ├── product-80-1.webp
│ │ │ ├── product-80-2.webp
│ │ │ ├── product-80-3.webp
│ │ │ ├── product-80-4.webp
│ │ │ ├── product-80-thumbnail.webp
│ │ │ ├── product-81-1.webp
│ │ │ ├── product-81-2.webp
│ │ │ ├── product-81-3.webp
│ │ │ ├── product-81-4.webp
│ │ │ ├── product-81-thumbnail.webp
│ │ │ ├── product-82-1.webp
│ │ │ ├── product-82-2.webp
│ │ │ ├── product-82-3.webp
│ │ │ ├── product-82-4.webp
│ │ │ ├── product-82-thumbnail.webp
│ │ │ ├── product-83-1.webp
│ │ │ ├── product-83-2.webp
│ │ │ ├── product-83-3.webp
│ │ │ ├── product-83-4.webp
│ │ │ ├── product-83-thumbnail.webp
│ │ │ ├── product-84-1.webp
│ │ │ ├── product-84-2.webp
│ │ │ ├── product-84-thumbnail.webp
│ │ │ ├── product-85-1.webp
│ │ │ ├── product-85-2.webp
│ │ │ ├── product-85-thumbnail.webp
│ │ │ ├── product-86-1.webp
│ │ │ ├── product-86-2.webp
│ │ │ ├── product-86-3.webp
│ │ │ ├── product-86-4.webp
│ │ │ ├── product-86-thumbnail.webp
│ │ │ ├── product-87-1.webp
│ │ │ ├── product-87-2.webp
│ │ │ ├── product-87-3.webp
│ │ │ ├── product-87-4.webp
│ │ │ ├── product-87-thumbnail.webp
│ │ │ ├── product-88-1.webp
│ │ │ ├── product-88-2.webp
│ │ │ ├── product-88-3.webp
│ │ │ ├── product-88-4.webp
│ │ │ ├── product-88-thumbnail.webp
│ │ │ ├── product-89-1.webp
│ │ │ ├── product-89-2.webp
│ │ │ ├── product-89-3.webp
│ │ │ ├── product-89-4.webp
│ │ │ ├── product-89-thumbnail.webp
│ │ │ ├── product-9-1.webp
│ │ │ ├── product-9-2.webp
│ │ │ ├── product-9-3.webp
│ │ │ ├── product-9-4.webp
│ │ │ ├── product-9-thumbnail.webp
│ │ │ ├── product-90-1.webp
│ │ │ ├── product-90-2.webp
│ │ │ ├── product-90-3.webp
│ │ │ ├── product-90-4.webp
│ │ │ ├── product-90-thumbnail.webp
│ │ │ ├── product-91-1.webp
│ │ │ ├── product-91-2.webp
│ │ │ ├── product-91-3.webp
│ │ │ ├── product-91-4.webp
│ │ │ ├── product-91-thumbnail.webp
│ │ │ ├── product-92-1.webp
│ │ │ ├── product-92-2.webp
│ │ │ ├── product-92-3.webp
│ │ │ ├── product-92-4.webp
│ │ │ ├── product-92-thumbnail.webp
│ │ │ ├── product-93-1.webp
│ │ │ ├── product-93-2.webp
│ │ │ ├── product-93-3.webp
│ │ │ ├── product-93-4.webp
│ │ │ ├── product-93-thumbnail.webp
│ │ │ ├── product-94-1.webp
│ │ │ ├── product-94-2.webp
│ │ │ ├── product-94-3.webp
│ │ │ ├── product-94-thumbnail.webp
│ │ │ ├── product-95-1.webp
│ │ │ ├── product-95-2.webp
│ │ │ ├── product-95-3.webp
│ │ │ ├── product-95-4.webp
│ │ │ ├── product-95-thumbnail.webp
│ │ │ ├── product-96-1.webp
│ │ │ ├── product-96-2.webp
│ │ │ ├── product-96-3.webp
│ │ │ ├── product-96-4.webp
│ │ │ ├── product-96-thumbnail.webp
│ │ │ ├── product-97-1.webp
│ │ │ ├── product-97-2.webp
│ │ │ ├── product-97-3.webp
│ │ │ ├── product-97-4.webp
│ │ │ ├── product-97-thumbnail.webp
│ │ │ ├── product-98-1.webp
│ │ │ ├── product-98-2.webp
│ │ │ ├── product-98-3.webp
│ │ │ ├── product-98-4.webp
│ │ │ ├── product-98-thumbnail.webp
│ │ │ ├── product-99-1.webp
│ │ │ ├── product-99-2.webp
│ │ │ ├── product-99-3.webp
│ │ │ ├── product-99-4.webp
│ │ │ └── product-99-thumbnail.webp
│ │ └── products.json
│ ├── icons
│ │ └── icon-1024x1024.png
│ └── shaders
│ │ └── shimmer.frag
├── bin
│ └── web_move_images.dart
├── build.yaml
├── config
│ ├── development.json
│ ├── production.json
│ └── staging.json
├── devtools_options.yaml
├── firebase.json
├── flutter_launcher_icons.yaml
├── flutter_native_splash.yaml
├── integration_test
│ ├── app_test.dart
│ └── src
│ │ ├── fake
│ │ ├── fake_authentication.dart
│ │ ├── fake_dependencies.dart
│ │ └── fake_product.dart
│ │ └── util
│ │ └── tester_extension.dart
├── ios
│ ├── .gitignore
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-50x50@1x.png
│ │ │ │ ├── Icon-App-50x50@2x.png
│ │ │ │ ├── Icon-App-57x57@1x.png
│ │ │ │ ├── Icon-App-57x57@2x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-72x72@1x.png
│ │ │ │ ├── Icon-App-72x72@2x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ ├── LaunchBackground.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ └── background.png
│ │ │ └── LaunchImage.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── LaunchImage.png
│ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ └── README.md
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── lib
│ ├── main.dart
│ └── src
│ │ ├── common
│ │ ├── constant
│ │ │ ├── assets.gen.dart
│ │ │ ├── config.dart
│ │ │ └── pubspec.yaml.g.dart
│ │ ├── controller
│ │ │ ├── controller.dart
│ │ │ ├── controller_observer.dart
│ │ │ ├── droppable_controller_concurrency.dart
│ │ │ ├── sequential_controller_concurrency.dart
│ │ │ ├── state_consumer.dart
│ │ │ └── state_controller.dart
│ │ ├── localization
│ │ │ ├── generated
│ │ │ │ ├── intl
│ │ │ │ │ ├── messages_all.dart
│ │ │ │ │ └── messages_en.dart
│ │ │ │ └── l10n.dart
│ │ │ ├── intl_en.arb
│ │ │ └── localization.dart
│ │ ├── model
│ │ │ └── dependencies.dart
│ │ ├── router
│ │ │ ├── authentication_guard.dart
│ │ │ ├── home_guard.dart
│ │ │ ├── router_state_mixin.dart
│ │ │ ├── routes.dart
│ │ │ └── shop_guard.dart
│ │ ├── util
│ │ │ ├── color_util.dart
│ │ │ ├── error_util.dart
│ │ │ ├── log_buffer.dart
│ │ │ ├── platform
│ │ │ │ ├── error_util_js.dart
│ │ │ │ └── error_util_vm.dart
│ │ │ ├── screen_util.dart
│ │ │ └── timeouts.dart
│ │ └── widget
│ │ │ ├── app.dart
│ │ │ ├── app_error.dart
│ │ │ ├── common_actions.dart
│ │ │ ├── form_placeholder.dart
│ │ │ ├── history_button.dart
│ │ │ ├── not_found_screen.dart
│ │ │ ├── outlined_text.dart
│ │ │ ├── radial_progress_indicator.dart
│ │ │ ├── scaffold_padding.dart
│ │ │ ├── shimmer.dart
│ │ │ └── text_placeholder.dart
│ │ └── feature
│ │ ├── account
│ │ └── widget
│ │ │ ├── about_app_dialog.dart
│ │ │ ├── profile_icon_button.dart
│ │ │ ├── profile_screen.dart
│ │ │ └── settings_dialog.dart
│ │ ├── authentication
│ │ ├── controller
│ │ │ ├── authentication_controller.dart
│ │ │ └── authentication_state.dart
│ │ ├── data
│ │ │ └── authentication_repository.dart
│ │ ├── model
│ │ │ ├── sign_in_data.dart
│ │ │ └── user.dart
│ │ └── widget
│ │ │ ├── authentication_scope.dart
│ │ │ ├── log_out_button.dart
│ │ │ ├── signin_screen.dart
│ │ │ └── signup_screen.dart
│ │ ├── gallery
│ │ └── widget
│ │ │ ├── gallery_screen.dart
│ │ │ └── picture_screen.dart
│ │ ├── home
│ │ └── widget
│ │ │ └── home_screen.dart
│ │ ├── initialization
│ │ ├── data
│ │ │ ├── initialization.dart
│ │ │ ├── initialize_dependencies.dart
│ │ │ └── platform
│ │ │ │ ├── platform_initialization.dart
│ │ │ │ ├── platform_initialization_js.dart
│ │ │ │ └── platform_initialization_vm.dart
│ │ └── widget
│ │ │ ├── inherited_dependencies.dart
│ │ │ └── initialization_splash_screen.dart
│ │ └── shop
│ │ ├── controller
│ │ ├── favorite_controller.dart
│ │ ├── favorite_state.dart
│ │ ├── shop_controller.dart
│ │ └── shop_state.dart
│ │ ├── data
│ │ ├── product_repository.dart
│ │ └── shop_tabs_cache_service.dart
│ │ ├── model
│ │ ├── category.dart
│ │ └── product.dart
│ │ ├── shop_screens.dart
│ │ └── widget
│ │ ├── basket_screen.dart
│ │ ├── catalog_breadcrumbs.dart
│ │ ├── catalog_screen.dart
│ │ ├── category_screen.dart
│ │ ├── checkout_screen.dart
│ │ ├── favorite_button.dart
│ │ ├── favorites_screen.dart
│ │ ├── product_image_dialog.dart
│ │ ├── product_screen.dart
│ │ ├── shop_back_button.dart
│ │ ├── shop_scope.dart
│ │ └── shop_screen.dart
├── linux
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── macos
│ ├── .gitignore
│ ├── Flutter
│ │ ├── Flutter-Debug.xcconfig
│ │ ├── Flutter-Release.xcconfig
│ │ └── GeneratedPluginRegistrant.swift
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ └── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ ├── Base.lproj
│ │ │ └── MainMenu.xib
│ │ ├── Configs
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ └── RunnerTests
│ │ └── RunnerTests.swift
├── pubspec.lock
├── pubspec.yaml
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ ├── index.html
│ └── manifest.json
└── windows
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
│ └── runner
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── resources
│ └── app_icon.ico
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── extension
└── devtools
│ └── config.yaml
├── firebase.json
├── lib
├── octopus.dart
└── src
│ ├── controller
│ ├── config.dart
│ ├── controller.dart
│ ├── delegate.dart
│ ├── guard.dart
│ ├── information_parser.dart
│ ├── information_provider.dart
│ ├── information_provider_js.dart
│ ├── information_provider_vm.dart
│ ├── navigator
│ │ ├── controller.dart
│ │ ├── delegate.dart
│ │ └── observer.dart
│ ├── observer.dart
│ ├── singleton.dart
│ ├── state_queue.dart
│ └── typedefs.dart
│ ├── state
│ ├── name_regexp.dart
│ ├── node_extra_storage.dart
│ ├── state.dart
│ └── state_codec.dart
│ ├── util
│ ├── jenkins_hash.dart
│ ├── logs.dart
│ ├── platform
│ │ ├── system_navigator_util_js.dart
│ │ └── system_navigator_util_vm.dart
│ ├── state_util.dart
│ └── system_navigator_util.dart
│ └── widget
│ ├── bucket_navigator.dart
│ ├── build_context_extension.dart
│ ├── dialog_page.dart
│ ├── inherited_octopus.dart
│ ├── navigator.dart
│ ├── no_animation.dart
│ ├── route_context.dart
│ ├── tabs.dart
│ └── tools.dart
├── pubspec.yaml
└── test
├── octopus_test.dart
└── src
├── unit
├── hash_test.dart
└── state_test.dart
└── widget
├── fake_routes.dart
├── observer_test.dart
└── tester_extension.dart
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | #github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: plugfox
5 | #open_collective: # Replace with a single Open Collective username
6 | #ko_fi: # Replace with a single Ko-fi username
7 | #tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | #community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | #liberapay: # Replace with a single Liberapay username
10 | #issuehunt: # Replace with a single IssueHunt username
11 | #otechie: # Replace with a single Otechie username
12 | #lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: ['https://www.buymeacoffee.com/plugfox', 'https://boosty.to/plugfox']
14 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ""
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | **Describe the bug**
10 | A clear and concise description of what the bug is.
11 |
12 | **To Reproduce**
13 | Steps to reproduce the behavior:
14 |
15 | 1. Go to '...'
16 | 2. Click on '....'
17 | 3. Scroll down to '....'
18 | 4. See error
19 |
20 | **Expected behavior**
21 | A clear and concise description of what you expected to happen.
22 |
23 | **Screenshots**
24 | If applicable, add screenshots to help explain your problem.
25 |
26 | **Desktop (please complete the following information):**
27 |
28 | - OS: [e.g. iOS]
29 | - Browser [e.g. chrome, safari]
30 | - Version [e.g. 22]
31 |
32 | **Smartphone (please complete the following information):**
33 |
34 | - Device: [e.g. iPhone6]
35 | - OS: [e.g. iOS8.1]
36 | - Browser [e.g. stock browser, safari]
37 | - Version [e.g. 22]
38 |
39 | **Additional context**
40 | Add any other context about the problem here.
41 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ""
5 | labels: ""
6 | assignees: ""
7 | ---
8 |
9 | **Is your feature request related to a problem? Please describe.**
10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
11 |
12 | **Describe the solution you'd like**
13 | A clear and concise description of what you want to happen.
14 |
15 | **Describe alternatives you've considered**
16 | A clear and concise description of any alternative solutions or features you've considered.
17 |
18 | **Additional context**
19 | Add any other context or screenshots about the feature request here.
20 |
--------------------------------------------------------------------------------
/.github/dependabot.yaml:
--------------------------------------------------------------------------------
1 | version: 2
2 | enable-beta-ecosystems: true
3 | updates:
4 | - directory: "/"
5 | open-pull-requests-limit: 5
6 | package-ecosystem: "pub"
7 | rebase-strategy: auto
8 | schedule:
9 | interval: "monthly"
10 | # timezone: "UTC"
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
26 | /pubspec.lock
27 | .dart_tool
28 | build/
29 | **/doc/api/
30 | **/ios/Flutter/.last_build_id
31 | .flutter-plugins
32 | .flutter-plugins-dependencies
33 | .packages
34 | .pub-cache/
35 |
36 | # Pana
37 | log.pana.json
38 |
39 | # Test
40 | coverage/
41 | .coverage/
42 | /test/**/*.json
43 | /test/.test_coverage.dart
44 |
45 | # Temp
46 | /tmp
47 | /temp
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a"
8 | channel: "stable"
9 |
10 | project_type: package
11 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "Dart-Code.dart-code",
4 | "Dart-Code.flutter"
5 | ]
6 | }
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.0.9
2 |
3 | - Update to 3.24.0 flutter version
4 |
5 | ## 0.0.8
6 |
7 | - Lower `collection` version constraint to `^1.17.2`
8 |
9 | ## 0.0.7
10 |
11 | - Lower `meta` version constraint to `^1.9.0`
12 |
13 | ## 0.0.6
14 |
15 | - Lower `Dart SDK` constraint to `^3.1.0`
16 |
17 | ## 0.0.5
18 |
19 | - Lower the minimum version of `flutter` to `^3.13.9`
20 | - Add end-to-end tests
21 |
22 | ## 0.0.4
23 |
24 | - Avoid duplicates in the history of navigator reports
25 |
26 | ## 0.0.3
27 |
28 | - **BUG FIX**: Fix nested hash algorithm
29 |
30 | ## 0.0.2
31 |
32 | - **BREAKING CHANGE**: Add `state` to the routes builder
33 | - Public version
34 | - Basic "how to" and documentation
35 |
36 | ## 0.0.1-pre.2
37 |
38 | - Dialogs and pop buttons logic
39 |
40 | ## 0.0.1-pre.1
41 |
42 | - Refactoring
43 |
44 | ## 0.0.1-pre.0
45 |
46 | - Initial publication
47 |
--------------------------------------------------------------------------------
/example/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "flutter-octopus-example"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Symbolication related
35 | app.*.symbols
36 |
37 | # Obfuscation related
38 | app.*.map.json
39 |
40 | # Android Studio will place build artifacts here
41 | /android/app/debug
42 | /android/app/profile
43 | /android/app/release
44 |
--------------------------------------------------------------------------------
/example/README.md:
--------------------------------------------------------------------------------
1 | # octopus
2 |
3 | Routing example
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
13 |
14 | For help getting started with Flutter development, view the
15 | [online documentation](https://docs.flutter.dev/), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
--------------------------------------------------------------------------------
/example/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/example/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/app/src/main/kotlin/dev/plugfox/octopus/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package dev.plugfox.octopus
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
10 | }
11 | }
12 |
13 | allprojects {
14 | repositories {
15 | google()
16 | mavenCentral()
17 | }
18 | }
19 |
20 | rootProject.buildDir = '../build'
21 | subprojects {
22 | project.buildDir = "${rootProject.buildDir}/${project.name}"
23 | }
24 | subprojects {
25 | project.evaluationDependsOn(':app')
26 | }
27 |
28 | tasks.register("clean", Delete) {
29 | delete rootProject.buildDir
30 | }
31 |
--------------------------------------------------------------------------------
/example/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/example/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
6 |
--------------------------------------------------------------------------------
/example/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }
9 | settings.ext.flutterSdkPath = flutterSdkPath()
10 |
11 | includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
12 |
13 | repositories {
14 | google()
15 | mavenCentral()
16 | gradlePluginPortal()
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
21 | }
22 | }
23 |
24 | plugins {
25 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
26 | id "com.android.application" version "7.3.0" apply false
27 | }
28 |
29 | include ":app"
30 |
--------------------------------------------------------------------------------
/example/assets/data/categories.json:
--------------------------------------------------------------------------------
1 | {
2 | "categories": [
3 | {
4 | "parent": null,
5 | "id": "electronics",
6 | "title": "Electronics"
7 | },
8 | {
9 | "parent": "electronics",
10 | "id": "laptops-tablets",
11 | "title": "Laptops & tablets"
12 | },
13 | {
14 | "parent": "electronics",
15 | "id": "smartphones",
16 | "title": "Smartphones"
17 | },
18 | {
19 | "parent": "laptops-tablets",
20 | "id": "laptops",
21 | "title": "Laptops"
22 | },
23 | {
24 | "parent": null,
25 | "id": "fragrances",
26 | "title": "Fragrances"
27 | },
28 | {
29 | "parent": null,
30 | "id": "skincare",
31 | "title": "Skincare"
32 | },
33 | {
34 | "parent": null,
35 | "id": "groceries",
36 | "title": "Groceries"
37 | },
38 | {
39 | "parent": null,
40 | "id": "home-decoration",
41 | "title": "Home decoration"
42 | }
43 | ]
44 | }
45 |
--------------------------------------------------------------------------------
/example/assets/data/images/product-1-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-1-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-1-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-1-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-1-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-1-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-1-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-1-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-1-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-1-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-10-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-10-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-10-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-10-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-10-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-10-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-10-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-10-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-100-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-100-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-100-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-100-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-100-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-100-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-100-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-100-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-11-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-11-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-11-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-11-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-11-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-11-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-11-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-11-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-12-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-12-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-12-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-12-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-12-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-12-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-12-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-12-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-12-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-12-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-13-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-13-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-13-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-13-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-13-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-13-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-13-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-13-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-13-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-13-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-14-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-14-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-14-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-14-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-14-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-14-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-14-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-14-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-15-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-15-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-15-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-15-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-15-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-15-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-15-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-15-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-15-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-15-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-16-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-16-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-16-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-16-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-16-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-16-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-16-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-16-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-16-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-16-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-17-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-17-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-17-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-17-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-17-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-17-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-17-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-17-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-18-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-18-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-18-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-18-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-18-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-18-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-18-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-18-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-18-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-18-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-19-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-19-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-19-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-19-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-19-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-19-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-19-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-19-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-2-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-2-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-2-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-2-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-2-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-2-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-2-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-2-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-20-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-20-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-20-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-20-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-20-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-20-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-20-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-20-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-20-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-20-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-21-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-21-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-21-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-21-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-21-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-21-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-21-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-21-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-22-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-22-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-22-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-22-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-22-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-22-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-22-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-22-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-23-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-23-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-23-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-23-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-23-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-23-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-23-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-23-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-23-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-23-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-24-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-24-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-24-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-24-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-24-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-24-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-24-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-24-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-24-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-24-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-25-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-25-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-25-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-25-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-25-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-25-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-25-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-25-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-25-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-25-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-5.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-26-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-26-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-27-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-27-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-27-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-27-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-27-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-27-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-27-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-27-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-27-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-27-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-28-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-28-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-28-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-28-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-28-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-28-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-28-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-28-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-28-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-28-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-29-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-29-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-29-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-29-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-29-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-29-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-29-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-29-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-29-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-29-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-3-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-3-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-3-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-3-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-30-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-30-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-30-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-30-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-30-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-30-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-30-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-30-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-31-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-31-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-31-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-31-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-31-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-31-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-31-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-31-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-31-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-31-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-32-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-32-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-32-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-32-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-32-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-32-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-32-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-32-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-33-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-33-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-33-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-33-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-33-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-33-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-33-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-33-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-33-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-33-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-34-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-34-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-34-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-34-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-34-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-34-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-34-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-34-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-34-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-34-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-35-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-35-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-35-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-35-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-35-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-35-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-35-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-35-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-35-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-35-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-36-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-36-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-36-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-36-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-36-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-36-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-36-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-36-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-36-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-36-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-37-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-37-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-37-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-37-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-37-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-37-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-37-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-37-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-37-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-37-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-38-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-38-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-38-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-38-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-38-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-38-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-38-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-38-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-38-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-38-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-39-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-39-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-39-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-39-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-39-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-39-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-39-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-39-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-39-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-39-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-4-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-4-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-4-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-4-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-4-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-4-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-4-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-4-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-4-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-4-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-40-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-40-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-40-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-40-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-40-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-40-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-41-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-41-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-41-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-41-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-41-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-41-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-41-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-41-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-41-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-41-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-42-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-42-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-42-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-42-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-42-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-42-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-42-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-42-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-42-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-42-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-43-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-43-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-43-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-43-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-43-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-43-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-43-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-43-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-43-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-43-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-44-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-44-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-44-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-44-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-44-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-44-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-44-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-44-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-44-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-44-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-45-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-45-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-45-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-45-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-45-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-45-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-45-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-45-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-45-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-45-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-46-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-46-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-46-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-46-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-46-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-46-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-46-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-46-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-46-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-46-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-47-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-47-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-47-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-47-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-47-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-47-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-47-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-47-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-48-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-48-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-48-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-48-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-48-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-48-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-48-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-48-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-48-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-48-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-49-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-49-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-49-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-49-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-49-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-49-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-49-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-49-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-5-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-5-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-5-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-5-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-5-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-5-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-5-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-5-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-50-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-50-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-50-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-50-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-50-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-50-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-50-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-50-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-51-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-51-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-51-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-51-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-51-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-51-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-51-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-51-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-52-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-52-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-52-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-52-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-52-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-52-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-52-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-52-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-52-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-52-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-53-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-53-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-53-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-53-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-53-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-53-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-53-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-53-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-53-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-53-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-54-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-54-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-54-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-54-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-54-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-54-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-54-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-54-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-54-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-54-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-55-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-55-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-55-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-55-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-55-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-55-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-55-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-55-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-55-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-55-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-5.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-56-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-56-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-57-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-57-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-57-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-57-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-57-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-57-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-57-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-57-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-57-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-57-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-58-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-58-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-58-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-58-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-58-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-58-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-58-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-58-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-58-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-58-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-59-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-59-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-59-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-59-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-59-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-59-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-59-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-59-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-59-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-59-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-6-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-6-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-6-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-6-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-6-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-6-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-6-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-6-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-6-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-6-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-60-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-60-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-60-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-60-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-60-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-60-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-60-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-60-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-61-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-61-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-61-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-61-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-61-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-61-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-61-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-61-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-62-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-62-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-62-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-62-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-62-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-62-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-63-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-63-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-63-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-63-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-63-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-63-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-63-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-63-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-63-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-63-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-64-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-64-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-64-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-64-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-64-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-64-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-64-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-64-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-65-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-65-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-65-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-65-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-65-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-65-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-65-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-65-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-65-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-65-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-66-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-66-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-66-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-66-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-66-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-66-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-66-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-66-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-67-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-67-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-67-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-67-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-67-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-67-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-67-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-67-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-67-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-67-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-68-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-68-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-68-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-68-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-68-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-68-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-69-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-69-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-69-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-69-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-69-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-69-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-69-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-69-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-69-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-69-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-7-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-7-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-7-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-7-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-7-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-7-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-7-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-7-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-70-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-70-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-70-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-70-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-70-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-70-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-71-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-71-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-71-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-71-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-71-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-71-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-71-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-71-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-72-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-72-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-72-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-72-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-72-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-72-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-72-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-72-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-72-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-72-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-73-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-73-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-73-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-73-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-73-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-73-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-73-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-73-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-74-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-74-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-74-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-74-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-74-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-74-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-74-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-74-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-74-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-74-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-75-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-75-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-75-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-75-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-75-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-75-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-75-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-75-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-76-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-76-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-76-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-76-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-76-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-76-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-77-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-77-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-77-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-77-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-77-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-77-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-77-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-77-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-78-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-78-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-79-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-79-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-79-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-79-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-8-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-8-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-8-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-8-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-8-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-8-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-8-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-8-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-8-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-8-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-80-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-80-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-80-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-80-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-80-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-80-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-80-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-80-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-80-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-80-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-81-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-81-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-81-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-81-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-81-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-81-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-81-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-81-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-81-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-81-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-82-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-82-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-82-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-82-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-82-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-82-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-82-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-82-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-82-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-82-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-83-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-83-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-83-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-83-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-83-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-83-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-83-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-83-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-83-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-83-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-84-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-84-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-84-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-84-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-84-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-84-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-85-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-85-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-85-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-85-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-85-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-85-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-86-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-86-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-86-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-86-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-86-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-86-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-86-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-86-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-86-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-86-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-87-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-87-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-87-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-87-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-87-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-87-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-87-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-87-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-87-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-87-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-88-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-88-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-88-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-88-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-88-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-88-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-88-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-88-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-88-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-88-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-89-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-89-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-89-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-89-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-89-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-89-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-89-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-89-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-89-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-89-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-9-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-9-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-9-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-9-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-9-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-9-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-9-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-9-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-9-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-9-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-90-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-90-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-90-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-90-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-90-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-90-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-90-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-90-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-90-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-90-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-91-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-91-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-91-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-91-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-91-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-91-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-91-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-91-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-91-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-91-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-92-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-92-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-92-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-92-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-92-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-92-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-92-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-92-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-92-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-92-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-93-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-93-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-93-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-93-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-93-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-93-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-93-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-93-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-93-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-93-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-94-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-94-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-94-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-94-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-94-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-94-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-94-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-94-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-95-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-95-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-95-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-95-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-95-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-95-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-95-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-95-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-95-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-95-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-96-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-96-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-96-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-96-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-96-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-96-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-96-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-96-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-96-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-96-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-97-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-97-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-97-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-97-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-97-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-97-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-97-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-97-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-97-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-97-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-98-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-98-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-98-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-98-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-98-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-98-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-98-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-98-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-98-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-98-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-99-1.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-99-1.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-99-2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-99-2.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-99-3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-99-3.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-99-4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-99-4.webp
--------------------------------------------------------------------------------
/example/assets/data/images/product-99-thumbnail.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/data/images/product-99-thumbnail.webp
--------------------------------------------------------------------------------
/example/assets/icons/icon-1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/assets/icons/icon-1024x1024.png
--------------------------------------------------------------------------------
/example/build.yaml:
--------------------------------------------------------------------------------
1 | targets:
2 | $default:
3 | sources:
4 | - $package$
5 | - pubspec.yaml
6 | - lib/**
7 | - test/**
8 | builders:
9 | pubspec_generator:
10 | options:
11 | output: lib/src/common/constant/pubspec.yaml.g.dart
--------------------------------------------------------------------------------
/example/config/development.json:
--------------------------------------------------------------------------------
1 | {
2 | "ENVIRONMENT": "development"
3 | }
4 |
--------------------------------------------------------------------------------
/example/config/production.json:
--------------------------------------------------------------------------------
1 | {
2 | "ENVIRONMENT": "production"
3 | }
4 |
--------------------------------------------------------------------------------
/example/config/staging.json:
--------------------------------------------------------------------------------
1 | {
2 | "ENVIRONMENT": "staging"
3 | }
4 |
--------------------------------------------------------------------------------
/example/devtools_options.yaml:
--------------------------------------------------------------------------------
1 | extensions:
2 |
--------------------------------------------------------------------------------
/example/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "build/web",
4 | "ignore": [
5 | "firebase.json",
6 | "**/.*",
7 | "**/node_modules/**"
8 | ],
9 | "rewrites": [
10 | {
11 | "source": "**",
12 | "destination": "/index.html"
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/example/flutter_launcher_icons.yaml:
--------------------------------------------------------------------------------
1 | flutter_icons:
2 | image_path: "assets/icons/icon-1024x1024.png"
3 | android: true
4 | ios: true
5 | remove_alpha_ios: true
6 | min_sdk_android: 21 # android min sdk min:16, default 21
7 | background_color_ios: "#ffffff"
8 | web:
9 | generate: true
10 | image_path: "assets/icons/icon-1024x1024.png"
11 | background_color: "#ffffff"
12 | theme_color: "#ffffff"
13 | windows:
14 | generate: true
15 | image_path: "assets/icons/icon-1024x1024.png"
16 | icon_size: 256 # min:48, max:256, default: 48
17 | macos:
18 | generate: true
19 | image_path: "assets/icons/icon-1024x1024.png"
20 |
--------------------------------------------------------------------------------
/example/flutter_native_splash.yaml:
--------------------------------------------------------------------------------
1 | flutter_native_splash:
2 | color: "#42a5f5"
3 |
--------------------------------------------------------------------------------
/example/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/example/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/example/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "author" : "xcode",
19 | "version" : 1
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "LaunchImage@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "LaunchImage@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | 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.
--------------------------------------------------------------------------------
/example/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/example/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/example/lib/src/common/controller/controller_observer.dart:
--------------------------------------------------------------------------------
1 | import 'package:example/src/common/controller/controller.dart';
2 | import 'package:l/l.dart';
3 |
4 | class ControllerObserver implements IControllerObserver {
5 | @override
6 | void onCreate(IController controller) {
7 | l.v6('Controller | ${controller.runtimeType} | Created');
8 | }
9 |
10 | @override
11 | void onDispose(IController controller) {
12 | l.v5('Controller | ${controller.runtimeType} | Disposed');
13 | }
14 |
15 | @override
16 | void onStateChanged(
17 | IController controller, Object prevState, Object nextState) {
18 | l.d('Controller | ${controller.runtimeType} | $prevState -> $nextState');
19 | }
20 |
21 | @override
22 | void onError(IController controller, Object error, StackTrace stackTrace) {
23 | l.w('Controller | ${controller.runtimeType} | $error', stackTrace);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/example/lib/src/common/controller/state_controller.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:example/src/common/controller/controller.dart';
4 | import 'package:flutter/foundation.dart';
5 |
6 | /// State controller
7 | abstract interface class IStateController
8 | implements IController {
9 | /// The current state of the controller.
10 | State get state;
11 | }
12 |
13 | /// State controller
14 | abstract base class StateController extends Controller
15 | implements IStateController {
16 | /// State controller
17 | StateController({required State initialState}) : _$state = initialState;
18 |
19 | @override
20 | @nonVirtual
21 | State get state => _$state;
22 | State _$state;
23 |
24 | @protected
25 | @nonVirtual
26 | void setState(State state) {
27 | runZonedGuarded(
28 | () => Controller.observer?.onStateChanged(this, _$state, state),
29 | (error, stackTrace) {/* ignore */},
30 | );
31 | _$state = state;
32 | if (isDisposed) return;
33 | notifyListeners();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/example/lib/src/common/util/color_util.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_classes_with_only_static_members
2 |
3 | import 'package:flutter/material.dart';
4 |
5 | abstract final class ColorUtil {
6 | /// Get list of colors with length [count].
7 | static List getColors(int count) {
8 | final primariesLength = Colors.primaries.length;
9 | if (count <= primariesLength) return Colors.primaries.take(count).toList();
10 |
11 | final colors = List.filled(count, Colors.transparent);
12 | final step = count / (primariesLength - 1);
13 |
14 | var index = 0;
15 | for (var i = 0; i < primariesLength - 1; i++) {
16 | for (var j = 0; j < step; j++) {
17 | final color1 = Colors.primaries[i], color2 = Colors.primaries[i + 1];
18 | colors[index] = Color.lerp(color1, color2, j / step)!;
19 | index++;
20 | if (index == count) return colors;
21 | }
22 | }
23 |
24 | while (index < count) {
25 | colors[index] = Colors.primaries.last;
26 | index++;
27 | }
28 |
29 | return colors;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/example/lib/src/common/util/platform/error_util_js.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_positional_boolean_parameters
2 |
3 | Future $captureException(
4 | Object exception,
5 | StackTrace stackTrace,
6 | String? hint,
7 | bool fatal,
8 | ) =>
9 | Future.value(null);
10 |
11 | Future $captureMessage(
12 | String message,
13 | StackTrace? stackTrace,
14 | String? hint,
15 | bool warning,
16 | ) =>
17 | Future.value(null);
18 |
--------------------------------------------------------------------------------
/example/lib/src/common/util/timeouts.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | /// Extension methods for [Future].
4 | extension TimeoutsExtension on Future {
5 | /// Returns a [Future] that completes with this future's result, or with the
6 | /// result of calling the [onTimeout] function, if this future doesn't
7 | /// complete before the timeout is exceeded.
8 | ///
9 | /// The [onTimeout] function must return a [Future] which will be used as the
10 | /// result of the returned [Future], and must not throw.
11 | Future logicTimeout({
12 | double coefficient = 1,
13 | FutureOr Function()? onTimeout,
14 | }) =>
15 | timeout(
16 | const Duration(milliseconds: 20000) * coefficient,
17 | onTimeout: onTimeout,
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/example/lib/src/common/widget/common_actions.dart:
--------------------------------------------------------------------------------
1 | import 'dart:collection';
2 |
3 | import 'package:example/src/common/widget/history_button.dart';
4 | import 'package:example/src/feature/account/widget/profile_icon_button.dart';
5 | import 'package:example/src/feature/authentication/widget/log_out_button.dart';
6 | import 'package:flutter/widgets.dart';
7 |
8 | class CommonActions extends ListBase {
9 | CommonActions([List? actions])
10 | : _actions = [
11 | ...?actions,
12 | const HistoryButton(),
13 | const ProfileIconButton(),
14 | const LogOutButton(),
15 | ];
16 |
17 | final List _actions;
18 |
19 | @override
20 | int get length => _actions.length;
21 |
22 | @override
23 | set length(int newLength) => _actions.length = newLength;
24 |
25 | @override
26 | Widget operator [](int index) => _actions[index];
27 |
28 | @override
29 | void operator []=(int index, Widget value) => _actions[index] = value;
30 | }
31 |
--------------------------------------------------------------------------------
/example/lib/src/common/widget/scaffold_padding.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math' as math;
2 |
3 | import 'package:example/src/common/constant/config.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | /// {@template scaffold_padding}
7 | /// ScaffoldPadding widget.
8 | /// {@endtemplate}
9 | class ScaffoldPadding extends EdgeInsets {
10 | const ScaffoldPadding._(final double value)
11 | : super.symmetric(horizontal: value);
12 |
13 | /// {@macro scaffold_padding}
14 | factory ScaffoldPadding.of(BuildContext context) =>
15 | ScaffoldPadding._(math.max(
16 | (MediaQuery.sizeOf(context).width - Config.maxScreenLayoutWidth) / 2,
17 | 16));
18 |
19 | /// {@macro scaffold_padding}
20 | static Widget widget(BuildContext context, [Widget? child]) =>
21 | Padding(padding: ScaffoldPadding.of(context), child: child);
22 |
23 | /// {@macro scaffold_padding}
24 | static Widget sliver(BuildContext context, [Widget? child]) =>
25 | SliverPadding(padding: ScaffoldPadding.of(context), sliver: child);
26 | }
27 |
--------------------------------------------------------------------------------
/example/lib/src/common/widget/text_placeholder.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math' as math;
2 |
3 | import 'package:example/src/common/widget/shimmer.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | /// {@template text_placeholder}
7 | /// TextPlaceholder widget.
8 | /// {@endtemplate}
9 | class TextPlaceholder extends StatelessWidget {
10 | /// {@macro text_placeholder}
11 | TextPlaceholder({
12 | double width = double.infinity,
13 | double height = 28,
14 | super.key,
15 | }) : size = Size(width, height);
16 |
17 | /// Size of the placeholder
18 | final Size size;
19 |
20 | @override
21 | Widget build(BuildContext context) => LayoutBuilder(
22 | builder: (context, constraints) => Shimmer(
23 | size: Size(
24 | math.min(size.width, constraints.maxWidth - 16),
25 | size.height,
26 | ),
27 | color: Colors.grey[400],
28 | backgroundColor: Colors.grey[100],
29 | ),
30 | );
31 | }
32 |
--------------------------------------------------------------------------------
/example/lib/src/feature/account/widget/profile_icon_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:example/src/common/localization/localization.dart';
2 | import 'package:example/src/common/router/routes.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter/services.dart';
5 | import 'package:octopus/octopus.dart';
6 |
7 | /// {@template profile_icon_button}
8 | /// ProfileIconButton widget
9 | /// {@endtemplate}
10 | class ProfileIconButton extends StatelessWidget {
11 | /// {@macro profile_icon_button}
12 | const ProfileIconButton({super.key});
13 |
14 | @override
15 | Widget build(BuildContext context) => IconButton(
16 | icon: const Icon(Icons.person),
17 | tooltip: Localization.of(context).profileButton,
18 | onPressed: () {
19 | Octopus.maybeOf(context)?.setState((state) => state
20 | ..removeByName(Routes.profile.name)
21 | ..add(Routes.profile.node()));
22 | HapticFeedback.mediumImpact().ignore();
23 | },
24 | );
25 | }
26 |
--------------------------------------------------------------------------------
/example/lib/src/feature/account/widget/settings_dialog.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | /// {@template settings_screen}
4 | /// SettingsScreen widget.
5 | /// {@endtemplate}
6 | class SettingsDialog extends StatelessWidget {
7 | /// {@macro settings_screen}
8 | const SettingsDialog({super.key});
9 |
10 | @override
11 | Widget build(BuildContext context) => AlertDialog.adaptive(
12 | title: const Text('Settings'),
13 | content: const Text('Coming soon...'),
14 | actions: [
15 | TextButton(
16 | onPressed: () => Navigator.maybePop(context),
17 | child: const Text('Close'),
18 | ),
19 | ],
20 | shape: RoundedRectangleBorder(
21 | borderRadius: BorderRadius.circular(16),
22 | ),
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/example/lib/src/feature/authentication/model/sign_in_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | @immutable
4 | final class SignInData {
5 | const SignInData({
6 | required this.username,
7 | required this.password,
8 | });
9 |
10 | /// Username.
11 | final String username;
12 |
13 | /// Password.
14 | final String password;
15 | }
16 |
--------------------------------------------------------------------------------
/example/lib/src/feature/initialization/data/platform/platform_initialization.dart:
--------------------------------------------------------------------------------
1 | export 'platform_initialization_vm.dart'
2 | // ignore: uri_does_not_exist
3 | if (dart.library.html) 'platform_initialization_js.dart';
4 |
--------------------------------------------------------------------------------
/example/lib/src/feature/initialization/data/platform/platform_initialization_vm.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io' as io;
2 |
3 | Future $platformInitialization() =>
4 | io.Platform.isAndroid || io.Platform.isIOS
5 | ? _mobileInitialization()
6 | : _desktopInitialization();
7 |
8 | Future _mobileInitialization() async {}
9 |
10 | Future _desktopInitialization() async {}
11 |
--------------------------------------------------------------------------------
/example/lib/src/feature/shop/shop_screens.dart:
--------------------------------------------------------------------------------
1 | export 'package:example/src/feature/shop/widget/basket_screen.dart';
2 | export 'package:example/src/feature/shop/widget/catalog_screen.dart';
3 | export 'package:example/src/feature/shop/widget/category_screen.dart';
4 | export 'package:example/src/feature/shop/widget/checkout_screen.dart';
5 | export 'package:example/src/feature/shop/widget/favorites_screen.dart';
6 | export 'package:example/src/feature/shop/widget/product_image_dialog.dart';
7 | export 'package:example/src/feature/shop/widget/product_screen.dart';
8 | export 'package:example/src/feature/shop/widget/shop_screen.dart';
9 |
--------------------------------------------------------------------------------
/example/linux/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral
2 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 |
10 | void fl_register_plugins(FlPluginRegistry* registry) {
11 | }
12 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void fl_register_plugins(FlPluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/example/linux/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | )
7 |
8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
9 | )
10 |
11 | set(PLUGIN_BUNDLED_LIBRARIES)
12 |
13 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
18 | endforeach(plugin)
19 |
20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
23 | endforeach(ffi_plugin)
24 |
--------------------------------------------------------------------------------
/example/linux/main.cc:
--------------------------------------------------------------------------------
1 | #include "my_application.h"
2 |
3 | int main(int argc, char** argv) {
4 | g_autoptr(MyApplication) app = my_application_new();
5 | return g_application_run(G_APPLICATION(app), argc, argv);
6 | }
7 |
--------------------------------------------------------------------------------
/example/linux/my_application.h:
--------------------------------------------------------------------------------
1 | #ifndef FLUTTER_MY_APPLICATION_H_
2 | #define FLUTTER_MY_APPLICATION_H_
3 |
4 | #include
5 |
6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
7 | GtkApplication)
8 |
9 | /**
10 | * my_application_new:
11 | *
12 | * Creates a new Flutter-based application.
13 | *
14 | * Returns: a new #MyApplication.
15 | */
16 | MyApplication* my_application_new();
17 |
18 | #endif // FLUTTER_MY_APPLICATION_H_
19 |
--------------------------------------------------------------------------------
/example/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
--------------------------------------------------------------------------------
/example/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/example/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/example/macos/Flutter/GeneratedPluginRegistrant.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | import FlutterMacOS
6 | import Foundation
7 |
8 | import path_provider_foundation
9 | import shared_preferences_foundation
10 |
11 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
12 | PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
13 | SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
14 | }
15 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @NSApplicationMain
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = octopus
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = dev.plugfox.octopus
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2023 dev.plugfox. All rights reserved.
15 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/example/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/example/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.network.server
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/example/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/example/macos/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import FlutterMacOS
2 | import Cocoa
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/example/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/web/favicon.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/example/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/example/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "octopus",
3 | "short_name": "octopus",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#ffffff",
7 | "theme_color": "#ffffff",
8 | "description": "Routing example",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | },
22 | {
23 | "src": "icons/Icon-maskable-192.png",
24 | "sizes": "192x192",
25 | "type": "image/png",
26 | "purpose": "maskable"
27 | },
28 | {
29 | "src": "icons/Icon-maskable-512.png",
30 | "sizes": "512x512",
31 | "type": "image/png",
32 | "purpose": "maskable"
33 | }
34 | ]
35 | }
--------------------------------------------------------------------------------
/example/windows/.gitignore:
--------------------------------------------------------------------------------
1 | flutter/ephemeral/
2 |
3 | # Visual Studio user-specific files.
4 | *.suo
5 | *.user
6 | *.userosscache
7 | *.sln.docstates
8 |
9 | # Visual Studio build-related files.
10 | x64/
11 | x86/
12 |
13 | # Visual Studio cache files
14 | # files ending in .cache can be ignored
15 | *.[Cc]ache
16 | # but keep track of directories ending in .cache
17 | !*.[Cc]ache/
18 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugin_registrant.cc:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #include "generated_plugin_registrant.h"
8 |
9 |
10 | void RegisterPlugins(flutter::PluginRegistry* registry) {
11 | }
12 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void RegisterPlugins(flutter::PluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/example/windows/flutter/generated_plugins.cmake:
--------------------------------------------------------------------------------
1 | #
2 | # Generated file, do not edit.
3 | #
4 |
5 | list(APPEND FLUTTER_PLUGIN_LIST
6 | )
7 |
8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST
9 | )
10 |
11 | set(PLUGIN_BUNDLED_LIBRARIES)
12 |
13 | foreach(plugin ${FLUTTER_PLUGIN_LIST})
14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin})
15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $)
17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
18 | endforeach(plugin)
19 |
20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin})
22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
23 | endforeach(ffi_plugin)
24 |
--------------------------------------------------------------------------------
/example/windows/runner/flutter_window.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_FLUTTER_WINDOW_H_
2 | #define RUNNER_FLUTTER_WINDOW_H_
3 |
4 | #include
5 | #include
6 |
7 | #include
8 |
9 | #include "win32_window.h"
10 |
11 | // A window that does nothing but host a Flutter view.
12 | class FlutterWindow : public Win32Window {
13 | public:
14 | // Creates a new FlutterWindow hosting a Flutter view running |project|.
15 | explicit FlutterWindow(const flutter::DartProject& project);
16 | virtual ~FlutterWindow();
17 |
18 | protected:
19 | // Win32Window:
20 | bool OnCreate() override;
21 | void OnDestroy() override;
22 | LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam,
23 | LPARAM const lparam) noexcept override;
24 |
25 | private:
26 | // The project to run.
27 | flutter::DartProject project_;
28 |
29 | // The Flutter instance hosted by this window.
30 | std::unique_ptr flutter_controller_;
31 | };
32 |
33 | #endif // RUNNER_FLUTTER_WINDOW_H_
34 |
--------------------------------------------------------------------------------
/example/windows/runner/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Runner.rc
4 | //
5 | #define IDI_APP_ICON 101
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 102
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/example/windows/runner/resources/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PlugFox/octopus/18f7fdc26734d8533ac981e1bee74c05a12f6526/example/windows/runner/resources/app_icon.ico
--------------------------------------------------------------------------------
/example/windows/runner/runner.exe.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PerMonitorV2
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/example/windows/runner/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_UTILS_H_
2 | #define RUNNER_UTILS_H_
3 |
4 | #include
5 | #include
6 |
7 | // Creates a console for the process, and redirects stdout and stderr to
8 | // it for both the runner and the Flutter library.
9 | void CreateAndAttachConsole();
10 |
11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
12 | // encoded in UTF-8. Returns an empty std::string on failure.
13 | std::string Utf8FromUtf16(const wchar_t* utf16_string);
14 |
15 | // Gets the command line arguments passed in as a std::vector,
16 | // encoded in UTF-8. Returns an empty std::vector on failure.
17 | std::vector GetCommandLineArguments();
18 |
19 | #endif // RUNNER_UTILS_H_
20 |
--------------------------------------------------------------------------------
/extension/devtools/config.yaml:
--------------------------------------------------------------------------------
1 | name: octopus-devtools
2 | issueTracker: https://github.com/PlugFox/octopus/issues
3 | version: 0.0.1
4 | materialIconCodePoint: '0xe542'
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "example/build/web",
4 | "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
5 | "rewrites": [
6 | {
7 | "source": "**",
8 | "destination": "/index.html"
9 | }
10 | ]
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/octopus.dart:
--------------------------------------------------------------------------------
1 | library octopus;
2 |
3 | export 'src/controller/controller.dart';
4 | export 'src/controller/delegate.dart';
5 | export 'src/controller/guard.dart';
6 | export 'src/controller/observer.dart';
7 | export 'src/state/state.dart';
8 | export 'src/widget/bucket_navigator.dart';
9 | export 'src/widget/build_context_extension.dart';
10 | export 'src/widget/navigator.dart';
11 | export 'src/widget/no_animation.dart';
12 | export 'src/widget/route_context.dart';
13 | export 'src/widget/tools.dart';
14 |
--------------------------------------------------------------------------------
/lib/src/controller/delegate.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:octopus/src/state/state.dart';
3 |
4 | /// Octopus delegate.
5 | abstract base class OctopusDelegate extends RouterDelegate {
6 | /// Routes hash table.
7 | abstract final Map routes;
8 |
9 | /// Whether the controller is currently processing a tasks.
10 | bool get isProcessing;
11 |
12 | /// Completes when processing queue is empty
13 | /// and all transactions are completed.
14 | /// This is mean controller is ready to use and in a idle state.
15 | Future get processingCompleted;
16 |
17 | /// Build pages from [OctopusNode]s.
18 | List> buildPages(BuildContext context, List nodes);
19 | }
20 |
--------------------------------------------------------------------------------
/lib/src/controller/singleton.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 | import 'package:octopus/src/controller/controller.dart';
3 |
4 | /// Current singleton instance of the [Octopus].
5 | @internal
6 | Octopus? $octopusSingletonInstance;
7 |
--------------------------------------------------------------------------------
/lib/src/controller/typedefs.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 |
3 | /// Builder for the unknown route.
4 | typedef NotFoundBuilder = Widget Function(
5 | BuildContext ctx,
6 | String name,
7 | Map arguments,
8 | );
9 |
--------------------------------------------------------------------------------
/lib/src/state/name_regexp.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | /// Regular expression for the name of the state.
4 | @internal
5 | final Pattern $nameRegExp = RegExp(r'^[a-zA-Z0-9\-]+$');
6 |
--------------------------------------------------------------------------------
/lib/src/state/node_extra_storage.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | /// $NodeExtraStorage Singleton class
4 | @internal
5 | class $NodeExtraStorage {
6 | factory $NodeExtraStorage() => _internalSingleton;
7 | $NodeExtraStorage._internal() : _storage = ?>{};
8 | static final $NodeExtraStorage _internalSingleton =
9 | $NodeExtraStorage._internal();
10 |
11 | final Map?> _storage;
12 |
13 | @internal
14 | Map getByKey(String key) =>
15 | _storage[key] ??= {};
16 |
17 | @internal
18 | void removeByKey(String key) => _storage.remove(key);
19 |
20 | @internal
21 | void removeByKeys(Set keys) => keys.forEach(_storage.remove);
22 |
23 | @internal
24 | void removeEverythingExcept(Set keys) =>
25 | removeByKeys(_storage.keys.toSet().difference(keys));
26 | }
27 |
--------------------------------------------------------------------------------
/lib/src/util/platform/system_navigator_util_vm.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart';
2 | import 'package:meta/meta.dart';
3 | import 'package:octopus/src/util/logs.dart';
4 |
5 | /// Push state.
6 | @internal
7 | void $pushState(Object? data, String? title, Uri? url) {
8 | fine('pushState($url)');
9 | // SystemNavigator.selectMultiEntryHistory(); // selectSingleEntryHistory
10 | SystemNavigator.routeInformationUpdated(
11 | uri: url,
12 | state: data,
13 | replace: false,
14 | ).ignore();
15 | }
16 |
17 | /// Replace state.
18 | @internal
19 | void $replaceState(Object? data, String? title, Uri? url) {
20 | fine('replaceState($url)');
21 | // SystemNavigator.selectMultiEntryHistory(); // selectSingleEntryHistory
22 | SystemNavigator.routeInformationUpdated(
23 | uri: url,
24 | state: data,
25 | replace: true,
26 | ).ignore();
27 | }
28 |
29 | /// Close app.
30 | @internal
31 | void $closeApp() {
32 | fine('closeApp()');
33 | SystemNavigator.pop().ignore();
34 | }
35 |
--------------------------------------------------------------------------------
/lib/src/util/system_navigator_util.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_classes_with_only_static_members
2 |
3 | import 'package:meta/meta.dart';
4 | import 'package:octopus/src/util/platform/system_navigator_util_js.dart'
5 | // ignore: uri_does_not_exist
6 | if (dart.library.io) 'package:octopus/src/util/platform/system_navigator_util_vm.dart';
7 |
8 | @internal
9 | abstract final class SystemNavigatorUtil {
10 | static void pushState({Object? data, String? title, Uri? url}) =>
11 | $pushState(data, title, url);
12 |
13 | static void replaceState({Object? data, String? title, Uri? url}) =>
14 | $replaceState(data, title, url);
15 |
16 | static void closeApp() => $closeApp();
17 | }
18 |
--------------------------------------------------------------------------------
/lib/src/widget/build_context_extension.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart' show BuildContext;
2 | import 'package:octopus/src/controller/controller.dart';
3 | import 'package:octopus/src/state/state.dart';
4 | import 'package:octopus/src/widget/inherited_octopus.dart';
5 |
6 | /// Extension methods for [BuildContext].
7 | extension OctopusBuildContextExtension on BuildContext {
8 | /// Receives the [Octopus] instance from the elements tree.
9 | Octopus get octopus => InheritedOctopus.of(this, listen: false).octopus;
10 |
11 | /// Receives the current [OctopusState] instance from the elements tree.
12 | OctopusState$Immutable get readOctopusState =>
13 | InheritedOctopus.of(this, listen: false).state;
14 |
15 | /// Receives the current [OctopusState] instance from the elements tree
16 | /// and listen for changes.
17 | OctopusState$Immutable get watchOctopusState =>
18 | InheritedOctopus.of(this, listen: true).state;
19 | }
20 |
--------------------------------------------------------------------------------
/lib/src/widget/dialog_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:meta/meta.dart';
3 |
4 | /// Used for creating a dialog route if route name end with '-dialog'.
5 | @internal
6 | class OctopusDialogPage extends Page