From 78e6567182005eb58efee5659e67a7cfef2124f1 Mon Sep 17 00:00:00 2001 From: Martin Folkerts Date: Tue, 10 Oct 2023 17:02:35 +0200 Subject: [PATCH] wip --- .gitignore | 2 + ...ots planting date and harevsting data.xlsx | Bin 0 -> 89892 bytes Laravel_app/.editorconfig | 18 + Laravel_app/.env.example | 59 + Laravel_app/.gitattributes | 11 + Laravel_app/.gitignore | 19 + Laravel_app/README.md | 66 + Laravel_app/app/Console/Kernel.php | 27 + Laravel_app/app/Exceptions/Handler.php | 30 + .../app/Http/Controllers/Controller.php | 12 + Laravel_app/app/Http/Kernel.php | 68 + .../app/Http/Middleware/Authenticate.php | 17 + .../app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 30 + .../app/Http/Middleware/TrimStrings.php | 19 + .../app/Http/Middleware/TrustHosts.php | 20 + .../app/Http/Middleware/TrustProxies.php | 28 + .../app/Http/Middleware/ValidateSignature.php | 22 + .../app/Http/Middleware/VerifyCsrfToken.php | 17 + Laravel_app/app/Models/User.php | 45 + .../app/Providers/AppServiceProvider.php | 24 + .../app/Providers/AuthServiceProvider.php | 26 + .../Providers/BroadcastServiceProvider.php | 19 + .../app/Providers/EventServiceProvider.php | 38 + .../app/Providers/RouteServiceProvider.php | 40 + Laravel_app/artisan | 53 + Laravel_app/bootstrap/app.php | 55 + Laravel_app/bootstrap/cache/.gitignore | 2 + Laravel_app/composer.json | 66 + Laravel_app/composer.lock | 8076 +++++++++++++++++ Laravel_app/config/app.php | 188 + Laravel_app/config/auth.php | 115 + Laravel_app/config/broadcasting.php | 71 + Laravel_app/config/cache.php | 111 + Laravel_app/config/cors.php | 34 + Laravel_app/config/database.php | 151 + Laravel_app/config/filesystems.php | 76 + Laravel_app/config/hashing.php | 52 + Laravel_app/config/logging.php | 131 + Laravel_app/config/mail.php | 125 + Laravel_app/config/queue.php | 109 + Laravel_app/config/sanctum.php | 67 + Laravel_app/config/services.php | 34 + Laravel_app/config/session.php | 201 + Laravel_app/config/view.php | 36 + Laravel_app/database/.gitignore | 1 + .../database/factories/UserFactory.php | 38 + .../2014_10_12_000000_create_users_table.php | 32 + ...000_create_password_reset_tokens_table.php | 28 + ..._08_19_000000_create_failed_jobs_table.php | 32 + ...01_create_personal_access_tokens_table.php | 33 + .../database/seeders/DatabaseSeeder.php | 22 + Laravel_app/package-lock.json | 1483 +++ Laravel_app/package.json | 16 + Laravel_app/phpunit.xml | 31 + Laravel_app/public/.htaccess | 21 + Laravel_app/public/favicon.ico | 0 Laravel_app/public/index.php | 55 + Laravel_app/public/robots.txt | 2 + Laravel_app/resources/css/app.css | 0 Laravel_app/resources/js/app.js | 1 + Laravel_app/resources/js/bootstrap.js | 32 + Laravel_app/resources/views/welcome.blade.php | 140 + Laravel_app/routes/api.php | 19 + Laravel_app/routes/channels.php | 18 + Laravel_app/routes/console.php | 19 + Laravel_app/routes/web.php | 18 + Laravel_app/storage/app/.gitignore | 3 + Laravel_app/storage/app/public/.gitignore | 2 + Laravel_app/storage/framework/.gitignore | 9 + .../storage/framework/cache/.gitignore | 3 + .../storage/framework/cache/data/.gitignore | 2 + .../storage/framework/sessions/.gitignore | 2 + .../storage/framework/testing/.gitignore | 2 + .../storage/framework/views/.gitignore | 2 + Laravel_app/storage/logs/.gitignore | 2 + Laravel_app/tests/CreatesApplication.php | 21 + Laravel_app/tests/Feature/ExampleTest.php | 19 + Laravel_app/tests/TestCase.php | 10 + Laravel_app/tests/Unit/ExampleTest.php | 16 + Laravel_app/vite.config.js | 11 + Rplots.pdf | Bin 0 -> 160945 bytes pivot_20210625.geojson | 159 + python_app/.gitignore | 43 + python_app/Chemba_download.ipynb | 1031 +++ .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + .../request.json | 65 + r_app/.Rprofile | 1 + r_app/.gitignore | 18 + r_app/1_harvest_data_EcoFarm_v2.R | 178 + r_app/2_CI_data_prep.R | 218 + r_app/CI_report_dashboard_planet.Rmd | 513 ++ r_app/renv.lock | 2052 +++++ r_app/renv/.gitignore | 7 + r_app/renv/activate.R | 1180 +++ smartcane.sh | 38 + 109 files changed, 18937 insertions(+) create mode 100644 Current - Pivots planting date and harevsting data.xlsx create mode 100644 Laravel_app/.editorconfig create mode 100644 Laravel_app/.env.example create mode 100644 Laravel_app/.gitattributes create mode 100644 Laravel_app/.gitignore create mode 100644 Laravel_app/README.md create mode 100644 Laravel_app/app/Console/Kernel.php create mode 100644 Laravel_app/app/Exceptions/Handler.php create mode 100644 Laravel_app/app/Http/Controllers/Controller.php create mode 100644 Laravel_app/app/Http/Kernel.php create mode 100644 Laravel_app/app/Http/Middleware/Authenticate.php create mode 100644 Laravel_app/app/Http/Middleware/EncryptCookies.php create mode 100644 Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 Laravel_app/app/Http/Middleware/TrimStrings.php create mode 100644 Laravel_app/app/Http/Middleware/TrustHosts.php create mode 100644 Laravel_app/app/Http/Middleware/TrustProxies.php create mode 100644 Laravel_app/app/Http/Middleware/ValidateSignature.php create mode 100644 Laravel_app/app/Http/Middleware/VerifyCsrfToken.php create mode 100644 Laravel_app/app/Models/User.php create mode 100644 Laravel_app/app/Providers/AppServiceProvider.php create mode 100644 Laravel_app/app/Providers/AuthServiceProvider.php create mode 100644 Laravel_app/app/Providers/BroadcastServiceProvider.php create mode 100644 Laravel_app/app/Providers/EventServiceProvider.php create mode 100644 Laravel_app/app/Providers/RouteServiceProvider.php create mode 100755 Laravel_app/artisan create mode 100644 Laravel_app/bootstrap/app.php create mode 100644 Laravel_app/bootstrap/cache/.gitignore create mode 100644 Laravel_app/composer.json create mode 100644 Laravel_app/composer.lock create mode 100644 Laravel_app/config/app.php create mode 100644 Laravel_app/config/auth.php create mode 100644 Laravel_app/config/broadcasting.php create mode 100644 Laravel_app/config/cache.php create mode 100644 Laravel_app/config/cors.php create mode 100644 Laravel_app/config/database.php create mode 100644 Laravel_app/config/filesystems.php create mode 100644 Laravel_app/config/hashing.php create mode 100644 Laravel_app/config/logging.php create mode 100644 Laravel_app/config/mail.php create mode 100644 Laravel_app/config/queue.php create mode 100644 Laravel_app/config/sanctum.php create mode 100644 Laravel_app/config/services.php create mode 100644 Laravel_app/config/session.php create mode 100644 Laravel_app/config/view.php create mode 100644 Laravel_app/database/.gitignore create mode 100644 Laravel_app/database/factories/UserFactory.php create mode 100644 Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php create mode 100644 Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 Laravel_app/database/seeders/DatabaseSeeder.php create mode 100644 Laravel_app/package-lock.json create mode 100644 Laravel_app/package.json create mode 100644 Laravel_app/phpunit.xml create mode 100644 Laravel_app/public/.htaccess create mode 100644 Laravel_app/public/favicon.ico create mode 100644 Laravel_app/public/index.php create mode 100644 Laravel_app/public/robots.txt create mode 100644 Laravel_app/resources/css/app.css create mode 100644 Laravel_app/resources/js/app.js create mode 100644 Laravel_app/resources/js/bootstrap.js create mode 100644 Laravel_app/resources/views/welcome.blade.php create mode 100644 Laravel_app/routes/api.php create mode 100644 Laravel_app/routes/channels.php create mode 100644 Laravel_app/routes/console.php create mode 100644 Laravel_app/routes/web.php create mode 100644 Laravel_app/storage/app/.gitignore create mode 100644 Laravel_app/storage/app/public/.gitignore create mode 100644 Laravel_app/storage/framework/.gitignore create mode 100644 Laravel_app/storage/framework/cache/.gitignore create mode 100644 Laravel_app/storage/framework/cache/data/.gitignore create mode 100644 Laravel_app/storage/framework/sessions/.gitignore create mode 100644 Laravel_app/storage/framework/testing/.gitignore create mode 100644 Laravel_app/storage/framework/views/.gitignore create mode 100644 Laravel_app/storage/logs/.gitignore create mode 100644 Laravel_app/tests/CreatesApplication.php create mode 100644 Laravel_app/tests/Feature/ExampleTest.php create mode 100644 Laravel_app/tests/TestCase.php create mode 100644 Laravel_app/tests/Unit/ExampleTest.php create mode 100644 Laravel_app/vite.config.js create mode 100644 Rplots.pdf create mode 100644 pivot_20210625.geojson create mode 100644 python_app/.gitignore create mode 100644 python_app/Chemba_download.ipynb create mode 100644 python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json create mode 100644 python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json create mode 100644 python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json create mode 100644 python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json create mode 100644 python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json create mode 100644 python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json create mode 100644 python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json create mode 100644 python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json create mode 100644 python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json create mode 100644 python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json create mode 100644 python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json create mode 100644 python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json create mode 100644 python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json create mode 100644 python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json create mode 100644 r_app/.Rprofile create mode 100644 r_app/.gitignore create mode 100644 r_app/1_harvest_data_EcoFarm_v2.R create mode 100644 r_app/2_CI_data_prep.R create mode 100644 r_app/CI_report_dashboard_planet.Rmd create mode 100644 r_app/renv.lock create mode 100644 r_app/renv/.gitignore create mode 100644 r_app/renv/activate.R create mode 100755 smartcane.sh diff --git a/.gitignore b/.gitignore index e1db685..01f8967 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,5 @@ # R Ignores /r_app/*.Rhistory /r_app/*.Rdata + +.DS_Store diff --git a/Current - Pivots planting date and harevsting data.xlsx b/Current - Pivots planting date and harevsting data.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..88cc23e8d15c35090929d66df728b6168f4ef3bb GIT binary patch literal 89892 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 Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 2000 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell). + +### Premium Partners + +- **[Vehikl](https://vehikl.com/)** +- **[Tighten Co.](https://tighten.co)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Cubet Techno Labs](https://cubettech.com)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[Many](https://www.many.co.uk)** +- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** +- **[DevSquad](https://devsquad.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[OP.GG](https://op.gg)** +- **[WebReinvent](https://webreinvent.com/?utm_source=laravel&utm_medium=github&utm_campaign=patreon-sponsors)** +- **[Lendio](https://lendio.com)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/Laravel_app/app/Console/Kernel.php b/Laravel_app/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/Laravel_app/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/Laravel_app/app/Exceptions/Handler.php b/Laravel_app/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/Laravel_app/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/Laravel_app/app/Http/Controllers/Controller.php b/Laravel_app/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/Laravel_app/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/Laravel_app/app/Http/Middleware/Authenticate.php b/Laravel_app/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/Laravel_app/app/Http/Middleware/EncryptCookies.php b/Laravel_app/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/Laravel_app/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/Laravel_app/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php b/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/Laravel_app/app/Http/Middleware/TrimStrings.php b/Laravel_app/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/Laravel_app/app/Http/Middleware/TrustHosts.php b/Laravel_app/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/Laravel_app/app/Http/Middleware/TrustProxies.php b/Laravel_app/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/Laravel_app/app/Http/Middleware/ValidateSignature.php b/Laravel_app/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php b/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/Laravel_app/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/Laravel_app/app/Models/User.php b/Laravel_app/app/Models/User.php new file mode 100644 index 0000000..4d7f70f --- /dev/null +++ b/Laravel_app/app/Models/User.php @@ -0,0 +1,45 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; +} diff --git a/Laravel_app/app/Providers/AppServiceProvider.php b/Laravel_app/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/Laravel_app/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/Laravel_app/app/Providers/BroadcastServiceProvider.php b/Laravel_app/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/Laravel_app/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/Laravel_app/app/Providers/RouteServiceProvider.php b/Laravel_app/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/Laravel_app/app/Providers/RouteServiceProvider.php @@ -0,0 +1,40 @@ +by($request->user()?->id ?: $request->ip()); + }); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} diff --git a/Laravel_app/artisan b/Laravel_app/artisan new file mode 100755 index 0000000..67a3329 --- /dev/null +++ b/Laravel_app/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/Laravel_app/bootstrap/app.php b/Laravel_app/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/Laravel_app/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/Laravel_app/bootstrap/cache/.gitignore b/Laravel_app/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/Laravel_app/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/Laravel_app/composer.json b/Laravel_app/composer.json new file mode 100644 index 0000000..e1fb449 --- /dev/null +++ b/Laravel_app/composer.json @@ -0,0 +1,66 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], + "license": "MIT", + "require": { + "php": "^8.1", + "guzzlehttp/guzzle": "^7.2", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.2", + "laravel/tinker": "^2.8" + }, + "require-dev": { + "fakerphp/faker": "^1.9.1", + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/Laravel_app/composer.lock b/Laravel_app/composer.lock new file mode 100644 index 0000000..b32e29c --- /dev/null +++ b/Laravel_app/composer.lock @@ -0,0 +1,8076 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "aa322c53454393ed775cfe4807d54a50", + "packages": [ + { + "name": "brick/math", + "version": "0.11.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2023-06-16T13:40:37+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "84a527db05647743d50373e0ec53a152f2cde568" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-15T16:57:16+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-20T15:07:15+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-02-25T20:23:15+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:20:53+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:11:55+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:13:57+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:19:19+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.27.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b", + "reference": "616f81bd6dd8aa2e26a9fc21d9c95e98bd30803b", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.2", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.12", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-10-09T15:15:28+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.11", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/cce65a90e64712909ea1adc033e1d88de8455ffd", + "reference": "cce65a90e64712909ea1adc033e1d88de8455ffd", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.11" + }, + "time": "2023-10-03T01:07:35+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "338f633e6487e76b255470d3373fbc29228aa971" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971", + "reference": "338f633e6487e76b255470d3373fbc29228aa971", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-09-07T15:46:33+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-07-14T13:56:28+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.8.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.8.2" + }, + "time": "2023-08-15T14:27:00+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2023-08-30T16:55:00+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.17.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "bd4c9b26849d82364119c68429541f1631fba94b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/bd4c9b26849d82364119c68429541f1631fba94b", + "reference": "bd4c9b26849d82364119c68429541f1631fba94b", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.14", + "phpstan/phpstan": "^0.12.26", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.17.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-10-05T20:15:05+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-08-30T10:23:59+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-08-05T12:09:49+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-06-21T08:46:11+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.71.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "98276233188583f2ff845a0f992a235472d9466a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", + "reference": "98276233188583f2ff845a0f992a235472d9466a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.1.4", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2023-09-25T11:31:05+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": "7.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.5" + }, + "time": "2023-10-05T20:37:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "cead6637226456b35e1175cc53797dd585d85545" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/cead6637226456b35e1175cc53797dd585d85545", + "reference": "cead6637226456b35e1175cc53797dd585d85545", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.2" + }, + "time": "2023-09-19T11:58:07+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2023-02-08T01:06:31+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-02-25T19:38:58+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.21", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.21" + }, + "time": "2023-09-17T21:15:54+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.4", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "60a4c63ab724854332900504274f6150ff26d286" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.4" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-04-15T23:01:58+00:00" + }, + { + "name": "symfony/console", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T10:10:12+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-12T16:00:22+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "1f69476b64fb47105c06beef757766c376b548c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T06:57:20+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-06T06:56:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-26T12:56:25+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.2" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-04T21:33:54+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-30T06:37:04+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-06T09:47:15+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.2.13|>=6.3,<6.3.2" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/serializer": "~6.2.13|^6.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-29T06:59:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:30:37+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-07T10:39:22+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12|^2", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.2", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-20T16:05:51+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/string", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-18T10:38:32+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-30T17:17:10+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-08T07:25:02+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.3.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-09-12T10:11:35+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.6", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + }, + "time": "2023-01-03T09:29:04+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.5.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2022-10-16T01:01:54+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + }, + "time": "2023-06-12T08:44:38+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.3" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-07-13T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.13.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26.1", + "illuminate/view": "^10.23.1", + "laravel-zero/framework": "^10.1.2", + "mockery/mockery": "^1.6.6", + "nunomaduro/larastan": "^2.6.4", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.18.2" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2023-09-19T15:55:02+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "shasum": "" + }, + "require": { + "illuminate/console": "^8.0|^9.0|^10.0", + "illuminate/contracts": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "php": "^8.0", + "symfony/yaml": "^6.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2023-09-11T17:37:09+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.6", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-08-09T00:03:52+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.9.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "require-dev": { + "brianium/paratest": "^7.2.7", + "laravel/framework": "^10.23.1", + "laravel/pint": "^1.13.1", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.11.0", + "pestphp/pest": "^2.19.1", + "phpunit/phpunit": "^10.3.5", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-09-19T10:45:09+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-10-04T15:34:17+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/62bd7af13d282deeb95650077d28ba3600ca321c", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.4-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.1" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-10-08T05:01:11+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-14T13:18:12+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-28T11:50:59+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-01T07:48:21+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-04-11T05:39:26+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-24T13:22:09+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T09:25:50+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", + "symfony/process": "^5.2|^6.0", + "symfony/var-dumper": "^5.2|^6.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.3.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-28T08:07:24+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.11.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "illuminate/cache": "^9.52", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.0", + "symfony/process": "^5.4|^6.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-09-19T15:29:52+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3", + "symfony/var-dumper": "^6.2.3" + }, + "require-dev": { + "livewire/livewire": "^2.11", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.22.3", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-09T12:55:26+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/Laravel_app/config/app.php b/Laravel_app/config/app.php new file mode 100644 index 0000000..4c231b4 --- /dev/null +++ b/Laravel_app/config/app.php @@ -0,0 +1,188 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => ServiceProvider::defaultProviders()->merge([ + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), + +]; diff --git a/Laravel_app/config/auth.php b/Laravel_app/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/Laravel_app/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/Laravel_app/config/broadcasting.php b/Laravel_app/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/Laravel_app/config/broadcasting.php @@ -0,0 +1,71 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/Laravel_app/config/cache.php b/Laravel_app/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/Laravel_app/config/cache.php @@ -0,0 +1,111 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/Laravel_app/config/cors.php b/Laravel_app/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/Laravel_app/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/Laravel_app/config/database.php b/Laravel_app/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/Laravel_app/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/Laravel_app/config/filesystems.php b/Laravel_app/config/filesystems.php new file mode 100644 index 0000000..e9d9dbd --- /dev/null +++ b/Laravel_app/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/Laravel_app/config/hashing.php b/Laravel_app/config/hashing.php new file mode 100644 index 0000000..bcd3be4 --- /dev/null +++ b/Laravel_app/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/Laravel_app/config/logging.php b/Laravel_app/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/Laravel_app/config/logging.php @@ -0,0 +1,131 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/Laravel_app/config/mail.php b/Laravel_app/config/mail.php new file mode 100644 index 0000000..e652bd0 --- /dev/null +++ b/Laravel_app/config/mail.php @@ -0,0 +1,125 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/Laravel_app/config/queue.php b/Laravel_app/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/Laravel_app/config/queue.php @@ -0,0 +1,109 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/Laravel_app/config/sanctum.php b/Laravel_app/config/sanctum.php new file mode 100644 index 0000000..529cfdc --- /dev/null +++ b/Laravel_app/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/Laravel_app/config/services.php b/Laravel_app/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/Laravel_app/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/Laravel_app/config/session.php b/Laravel_app/config/session.php new file mode 100644 index 0000000..8fed97c --- /dev/null +++ b/Laravel_app/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/Laravel_app/config/view.php b/Laravel_app/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/Laravel_app/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/Laravel_app/database/.gitignore b/Laravel_app/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/Laravel_app/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/Laravel_app/database/factories/UserFactory.php b/Laravel_app/database/factories/UserFactory.php new file mode 100644 index 0000000..a6ecc0a --- /dev/null +++ b/Laravel_app/database/factories/UserFactory.php @@ -0,0 +1,38 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php b/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/Laravel_app/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/Laravel_app/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/Laravel_app/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/Laravel_app/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/Laravel_app/database/seeders/DatabaseSeeder.php b/Laravel_app/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/Laravel_app/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/Laravel_app/package-lock.json b/Laravel_app/package-lock.json new file mode 100644 index 0000000..13a0438 --- /dev/null +++ b/Laravel_app/package-lock.json @@ -0,0 +1,1483 @@ +{ + "name": "Laravel_app", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "tailwindcss": "^3.3.3" + }, + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "vite": "^4.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", + "integrity": "sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vite": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz", + "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", + "integrity": "sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "vite": "^2 || ^3 || ^4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/Laravel_app/package.json b/Laravel_app/package.json new file mode 100644 index 0000000..f9f46d0 --- /dev/null +++ b/Laravel_app/package.json @@ -0,0 +1,16 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "vite": "^4.0.0" + }, + "dependencies": { + "tailwindcss": "^3.3.3" + } +} diff --git a/Laravel_app/phpunit.xml b/Laravel_app/phpunit.xml new file mode 100644 index 0000000..f112c0c --- /dev/null +++ b/Laravel_app/phpunit.xml @@ -0,0 +1,31 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + diff --git a/Laravel_app/public/.htaccess b/Laravel_app/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/Laravel_app/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/Laravel_app/public/favicon.ico b/Laravel_app/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/Laravel_app/public/index.php b/Laravel_app/public/index.php new file mode 100644 index 0000000..1d69f3a --- /dev/null +++ b/Laravel_app/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = $kernel->handle( + $request = Request::capture() +)->send(); + +$kernel->terminate($request, $response); diff --git a/Laravel_app/public/robots.txt b/Laravel_app/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/Laravel_app/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/Laravel_app/resources/css/app.css b/Laravel_app/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/Laravel_app/resources/js/app.js b/Laravel_app/resources/js/app.js new file mode 100644 index 0000000..e59d6a0 --- /dev/null +++ b/Laravel_app/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/Laravel_app/resources/js/bootstrap.js b/Laravel_app/resources/js/bootstrap.js new file mode 100644 index 0000000..846d350 --- /dev/null +++ b/Laravel_app/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/Laravel_app/resources/views/welcome.blade.php b/Laravel_app/resources/views/welcome.blade.php new file mode 100644 index 0000000..638ec96 --- /dev/null +++ b/Laravel_app/resources/views/welcome.blade.php @@ -0,0 +1,140 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/Laravel_app/routes/api.php b/Laravel_app/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/Laravel_app/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/Laravel_app/routes/channels.php b/Laravel_app/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/Laravel_app/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/Laravel_app/routes/console.php b/Laravel_app/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/Laravel_app/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/Laravel_app/routes/web.php b/Laravel_app/routes/web.php new file mode 100644 index 0000000..d259f33 --- /dev/null +++ b/Laravel_app/routes/web.php @@ -0,0 +1,18 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/Laravel_app/tests/Feature/ExampleTest.php b/Laravel_app/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/Laravel_app/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/Laravel_app/tests/TestCase.php b/Laravel_app/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/Laravel_app/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/Laravel_app/vite.config.js b/Laravel_app/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/Laravel_app/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +}); diff --git a/Rplots.pdf b/Rplots.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a68f07a898e1614507bcbe9f2ff0d7560ccb2c59 GIT binary patch literal 160945 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 L?Cc6!ibVed7$vpB literal 0 HcmV?d00001 diff --git a/pivot_20210625.geojson b/pivot_20210625.geojson new file mode 100644 index 0000000..f8b3d67 --- /dev/null +++ b/pivot_20210625.geojson @@ -0,0 +1,159 @@ +{ +"type": "FeatureCollection", +"name": "pivot_20210625", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.933686532028823, -17.34741850738671 ], [ 34.936458268544008, -17.344213063126752 ], [ 34.936487787462688, -17.34423678523423 ], [ 34.936654047751475, -17.344385275553996 ], [ 34.936811988565154, -17.344541918958814 ], [ 34.936961177001955, -17.344706286119994 ], [ 34.93710120414535, -17.344877926538839 ], [ 34.937231686184816, -17.345056369781194 ], [ 34.937352265468007, -17.345241126766645 ], [ 34.937462611481052, -17.345431691108853 ], [ 34.937562421754727, -17.345627540503298 ], [ 34.937651422693591, -17.345828138158684 ], [ 34.937729370326288, -17.346032934268045 ], [ 34.937796050974356, -17.346241367515468 ], [ 34.937851281838412, -17.34645286661458 ], [ 34.937894911499427, -17.346666851874129 ], [ 34.93792682033417, -17.346882736786782 ], [ 34.937946920843501, -17.347099929636563 ], [ 34.937955157892617, -17.347317835120631 ], [ 34.937951508862682, -17.347535855980816 ], [ 34.937935983713146, -17.347753394640662 ], [ 34.937908624955057, -17.347969854843281 ], [ 34.937869507534906, -17.348184643285634 ], [ 34.937818738629701, -17.348397171244734 ], [ 34.937756457353686, -17.348606856191328 ], [ 34.937682834377377, -17.348813123386648 ], [ 34.937598071460293, -17.349015407457767 ], [ 34.937502400898275, -17.349213153947368 ], [ 34.937396084887148, -17.349405820833582 ], [ 34.937279414804458, -17.349592880015777 ], [ 34.93715271041102, -17.349773818762202 ], [ 34.937016318974827, -17.349948141115476 ], [ 34.936891437505039, -17.35009147006711 ], [ 34.933686532028823, -17.34741850738671 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892982579947684, -17.30260313717654 ], [ 34.8969126991338, -17.302747852699646 ], [ 34.896848733623173, -17.306522026027363 ], [ 34.896761992373065, -17.306520666974571 ], [ 34.89655566821915, -17.306507035570725 ], [ 34.896350369530914, -17.306483049995649 ], [ 34.896146659052505, -17.306448775992763 ], [ 34.895945095174199, -17.306404307507115 ], [ 34.895746230401478, -17.306349766427822 ], [ 34.895550609840363, -17.306285302254011 ], [ 34.895358769702952, -17.306211091684883 ], [ 34.895171235837296, -17.306127338135401 ], [ 34.894988522285892, -17.306034271178618 ], [ 34.894811129876366, -17.305932145916291 ], [ 34.894639544848609, -17.305821242279585 ], [ 34.894474237521642, -17.3057018642616 ], [ 34.894315661004462, -17.305574339084064 ], [ 34.894164249953917, -17.305439016300223 ], [ 34.89402041938321, -17.305296266836596 ], [ 34.89388456352436, -17.305146481976095 ], [ 34.893757054747589, -17.304990072285385 ], [ 34.893638242540632, -17.304827466489353 ], [ 34.893528452551024, -17.304659110295812 ], [ 34.89342798569345, -17.304485465173695 ], [ 34.893337117325196, -17.304307007087981 ], [ 34.893256096491513, -17.304124225194958 ], [ 34.893185145243294, -17.30393762050133 ], [ 34.893124458028609, -17.303747704490792 ], [ 34.893074201160012, -17.303554997721992 ], [ 34.893034512359016, -17.303360028401542 ], [ 34.893005500378912, -17.303163330936176 ], [ 34.892987244707008, -17.302965444467794 ], [ 34.892979795347131, -17.302766911395732 ], [ 34.892982579947684, -17.30260313717654 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887065228066767, -17.304559537671949 ], [ 34.887585923201613, -17.308341731698718 ], [ 34.887518594228453, -17.308350893542517 ], [ 34.887312586440835, -17.308368425006687 ], [ 34.887105905758595, -17.30837557560691 ], [ 34.886899118713622, -17.308372325739303 ], [ 34.886692792129786, -17.308358684308679 ], [ 34.886487491568985, -17.308334688704125 ], [ 34.88628377978047, -17.308300404696595 ], [ 34.886082215158112, -17.308255926258568 ], [ 34.885883350209426, -17.308201375306449 ], [ 34.885687730040928, -17.308136901366442 ], [ 34.885495890863602, -17.308062681164554 ], [ 34.885308358522892, -17.307978918142162 ], [ 34.885125647057059, -17.30788584189828 ], [ 34.884948257288038, -17.307783707560155 ], [ 34.884776675448421, -17.307672795083811 ], [ 34.884611371848493, -17.307553408486619 ], [ 34.884452799587045, -17.307425875013813 ], [ 34.88430139330918, -17.307290544241372 ], [ 34.884157568015056, -17.307147787117731 ], [ 34.884021717922174, -17.306997994946784 ], [ 34.883894215384913, -17.306841578315254 ], [ 34.883775409873941, -17.30667896596702 ], [ 34.88366562701836, -17.306510603627871 ], [ 34.8835651677133, -17.306336952783568 ], [ 34.883474307295344, -17.306158489414777 ], [ 34.883393294787901, -17.305975702692255 ], [ 34.883322352219061, -17.305789093635923 ], [ 34.883261674013042, -17.305599173741417 ], [ 34.883211426457713, -17.305406463578016 ], [ 34.883171747249051, -17.305211491361643 ], [ 34.883142745114029, -17.305014791506924 ], [ 34.883138407553353, -17.304967747142655 ], [ 34.887065228066767, -17.304559537671949 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893567231271753, -17.309696371939275 ], [ 34.897496240357995, -17.309278976679899 ], [ 34.897513960068423, -17.309470988039859 ], [ 34.897521415315232, -17.309669520314646 ], [ 34.897518043544963, -17.309868155299348 ], [ 34.897503853964437, -17.310066348552152 ], [ 34.897478885431291, -17.310263556840273 ], [ 34.897443206347809, -17.310459239628845 ], [ 34.897396914473845, -17.310652860562591 ], [ 34.897340136659309, -17.310843888935889 ], [ 34.897273028496706, -17.311031801147418 ], [ 34.897195773895142, -17.311216082135513 ], [ 34.897108584576472, -17.311396226789807 ], [ 34.89701169949538, -17.311571741335957 ], [ 34.896905384184613, -17.311742144689092 ], [ 34.896789930027452, -17.311906969772526 ], [ 34.896665653459273, -17.312065764798231 ], [ 34.896532895100407, -17.312218094505198 ], [ 34.896392018822652, -17.312363541352671 ], [ 34.896243410752028, -17.312501706664793 ], [ 34.896087478210511, -17.312632211723482 ], [ 34.895924648599603, -17.312754698806646 ], [ 34.895755368228862, -17.312868832168913 ], [ 34.895580101092513, -17.312974298962004 ], [ 34.895399327597637, -17.313070810092483 ], [ 34.89521354324723, -17.313158101014249 ], [ 34.895023257281863, -17.313235932453882 ], [ 34.894828991283774, -17.313304091066559 ], [ 34.894631277746932, -17.313362390021041 ], [ 34.89443065861731, -17.313410669511875 ], [ 34.894227683807067, -17.313448797197559 ], [ 34.894135431768206, -17.313461353424515 ], [ 34.893567231271753, -17.309696371939275 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893769553711472, -17.316586264213559 ], [ 34.892115685045027, -17.314291416092694 ], [ 34.892195700790658, -17.314237469887129 ], [ 34.892325067135602, -17.314159627332327 ], [ 34.892458497355165, -17.314088394803694 ], [ 34.892595625734742, -17.314023967536052 ], [ 34.892736076425152, -17.313966522111834 ], [ 34.892879464472585, -17.313916215977194 ], [ 34.893025396873647, -17.313873187010579 ], [ 34.893173473652432, -17.313837553144793 ], [ 34.893323288956616, -17.313809412043945 ], [ 34.893474432169747, -17.313788840835716 ], [ 34.893626489036507, -17.3137758959001 ], [ 34.893779042797945, -17.313770612714848 ], [ 34.89393167533364, -17.313773005758303 ], [ 34.894083968307477, -17.313783068469746 ], [ 34.894235504314096, -17.313800773267371 ], [ 34.894385868022724, -17.313826071623883 ], [ 34.894534647315439, -17.313858894199562 ], [ 34.894681434416484, -17.313899151032253 ], [ 34.894825827009804, -17.313946731783918 ], [ 34.89496742934147, -17.314001506043073 ], [ 34.895105853304429, -17.314063323682145 ], [ 34.895240719501928, -17.31413201526895 ], [ 34.895371658287381, -17.314207392530999 ], [ 34.895498310777313, -17.314289248871496 ], [ 34.895620329835019, -17.314377359935495 ], [ 34.895737381021917, -17.3144714842248 ], [ 34.895849143514049, -17.314571363759772 ], [ 34.895955310981499, -17.31467672478637 ], [ 34.896055592427977, -17.314787278526357 ], [ 34.896149712988276, -17.314902721968778 ], [ 34.896237414681828, -17.315022738700307 ], [ 34.896250865251233, -17.315043362242964 ], [ 34.893769553711472, -17.316586264213559 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.90130835758503, -17.31122562620051 ], [ 34.899440097999843, -17.313485312578923 ], [ 34.8972189524941, -17.311647539775638 ], [ 34.897298142992156, -17.311556674113714 ], [ 34.897402122142452, -17.311449320113248 ], [ 34.897511807803241, -17.311347340442076 ], [ 34.897626899332451, -17.311251014610363 ], [ 34.897747081272875, -17.311160606631386 ], [ 34.897872024216817, -17.311076364297964 ], [ 34.898001385709044, -17.310998518503435 ], [ 34.898134811185194, -17.310927282608827 ], [ 34.898271934943708, -17.310862851858154 ], [ 34.898412381148042, -17.310805402843425 ], [ 34.898555764856667, -17.310755093020635 ], [ 34.898701693078088, -17.310712060278291 ], [ 34.898849765847828, -17.310676422559613 ], [ 34.898999577324581, -17.310648277539208 ], [ 34.899150716902355, -17.310627702355518 ], [ 34.89930277033578, -17.31061475339942 ], [ 34.899455320875333, -17.310609466159704 ], [ 34.899607950409418, -17.310611855125785 ], [ 34.899760240610121, -17.310621913748125 ], [ 34.899911774079676, -17.310639614456139 ], [ 34.900062135494302, -17.31066490873372 ], [ 34.900210912742331, -17.310697727252315 ], [ 34.900357698053639, -17.310737980060885 ], [ 34.900502089117012, -17.310785556832428 ], [ 34.90064369018279, -17.310840327166343 ], [ 34.900782113147358, -17.310902140945849 ], [ 34.900916978616706, -17.310970828749291 ], [ 34.901047916946233, -17.311046202314571 ], [ 34.901174569253754, -17.311128055055008 ], [ 34.901296588403042, -17.31121616262552 ], [ 34.90130835758503, -17.31122562620051 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900201998898332, -17.316577029381111 ], [ 34.901510659033576, -17.318761975282452 ], [ 34.89921991385566, -17.319939028684551 ], [ 34.89919319521254, -17.31989285674155 ], [ 34.899133472197327, -17.319775587027554 ], [ 34.899080220785628, -17.319655475739637 ], [ 34.899033586926492, -17.319532852100672 ], [ 34.898993698429557, -17.31940805221921 ], [ 34.898960664614833, -17.319281418168284 ], [ 34.898934576013126, -17.319153297047684 ], [ 34.898915504118094, -17.319024040032534 ], [ 34.898903501190432, -17.318894001410737 ], [ 34.898898600114762, -17.318763537611808 ], [ 34.89890081430967, -17.318633006229952 ], [ 34.898910137691097, -17.318502765043846 ], [ 34.898926544689147, -17.318373171036008 ], [ 34.898949990318393, -17.318244579414355 ], [ 34.898980410301313, -17.318117342638544 ], [ 34.899017721244583, -17.317991809453979 ], [ 34.899061820867914, -17.317868323935873 ], [ 34.89911258828446, -17.317747224546256 ], [ 34.899169884332323, -17.317628843206275 ], [ 34.899233551956158, -17.317513504386454 ], [ 34.899303416637665, -17.317401524217455 ], [ 34.899379286874172, -17.317293209623546 ], [ 34.899460954703535, -17.317188857481462 ], [ 34.899548196274232, -17.317088753806768 ], [ 34.899640772459016, -17.316993172969916 ], [ 34.899738429510414, -17.31690237694437 ], [ 34.899840899756157, -17.316816614588575 ], [ 34.899947902332954, -17.316736120963917 ], [ 34.900059143956319, -17.316661116690586 ], [ 34.900174319724371, -17.316591807342899 ], [ 34.900201998898332, -17.316577029381111 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.895357321246472, -17.319337751577674 ], [ 34.896432140987109, -17.321371469783127 ], [ 34.894337657341168, -17.322447678138754 ], [ 34.894309541855741, -17.3223990902598 ], [ 34.89425566308077, -17.32229329109223 ], [ 34.894207622969382, -17.322184928461439 ], [ 34.894165553188593, -17.322074299386902 ], [ 34.894129569040125, -17.321961707099845 ], [ 34.894099769144624, -17.321847460212147 ], [ 34.894076235171276, -17.321731871870391 ], [ 34.894059031614177, -17.321615258897467 ], [ 34.89404820561564, -17.321497940924189 ], [ 34.894043786837109, -17.321380239513154 ], [ 34.894045787378019, -17.321262477277379 ], [ 34.894054201742712, -17.321144976995981 ], [ 34.894069006855688, -17.321028060729436 ], [ 34.894090162124932, -17.32091204893689 ], [ 34.894117609553369, -17.320797259597772 ], [ 34.894151273897926, -17.320684007340216 ], [ 34.89419106287589, -17.320572602578771 ], [ 34.894236867418009, -17.32046335066353 ], [ 34.894288561967485, -17.32035655104325 ], [ 34.894346004824278, -17.320252496444606 ], [ 34.894409038533638, -17.320151472069909 ], [ 34.894477490317634, -17.320053754815419 ], [ 34.894551172548908, -17.319959612512406 ], [ 34.894629883264997, -17.319869303193162 ], [ 34.894713406721877, -17.319783074383764 ], [ 34.894801513985477, -17.319701162425709 ], [ 34.894893963559014, -17.319623791828143 ], [ 34.894990502045104, -17.319551174652602 ], [ 34.895090864840206, -17.319483509931821 ], [ 34.895194776859846, -17.319420983124225 ], [ 34.895301953292638, -17.319363765605722 ], [ 34.895357321246472, -17.319337751577674 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.885846577829994, -17.324065205990067 ], [ 34.886782334569538, -17.326739205117487 ], [ 34.883964047061163, -17.327599439232444 ], [ 34.883926891813566, -17.3274831654618 ], [ 34.883889797650568, -17.327340927904032 ], [ 34.883860504808354, -17.3271970206277 ], [ 34.883839093559693, -17.327051838077736 ], [ 34.883825622573575, -17.326905778193673 ], [ 34.88382012875465, -17.326759241318918 ], [ 34.883822627142258, -17.326612629103337 ], [ 34.883833110869425, -17.326466343402387 ], [ 34.883851551181877, -17.326320785175589 ], [ 34.883877897517046, -17.326176353387591 ], [ 34.88391207764294, -17.326033443914554 ], [ 34.883953997856267, -17.325892448459154 ], [ 34.884003543239437, -17.325753753476985 ], [ 34.884060577975809, -17.32561773911727 ], [ 34.884124945722114, -17.325484778181053 ], [ 34.884196470037082, -17.325355235099337 ], [ 34.884274954865283, -17.325229464934313 ], [ 34.884360185074598, -17.325107812406213 ], [ 34.884451927046008, -17.324990610948547 ], [ 34.884549929313991, -17.324878181794265 ], [ 34.884653923255925, -17.324770833095336 ], [ 34.884763623828356, -17.324668859078276 ], [ 34.884878730348319, -17.324572539237757 ], [ 34.884998927317575, -17.324482137570598 ], [ 34.885123885287243, -17.324397901852347 ], [ 34.885253261760887, -17.324320062958176 ], [ 34.885386702133168, -17.324248834230222 ], [ 34.885523840661676, -17.324184410892851 ], [ 34.885664301469411, -17.324126969517753 ], [ 34.885807699574862, -17.324076667539991 ], [ 34.885846577829994, -17.324065205990067 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892592473294087, -17.324940604483569 ], [ 34.890807409243124, -17.32342733014784 ], [ 34.890881858516011, -17.32335047371787 ], [ 34.890969969192497, -17.323268563141767 ], [ 34.891062422186693, -17.323191194008754 ], [ 34.891158964091794, -17.32311857837632 ], [ 34.891259330294872, -17.32305091527299 ], [ 34.891363245702173, -17.322988390152755 ], [ 34.891470425492983, -17.322931174386909 ], [ 34.891580575900392, -17.322879424794326 ], [ 34.891693395016318, -17.322833283211736 ], [ 34.891808573619024, -17.322792876105019 ], [ 34.891925796020537, -17.322758314222579 ], [ 34.892044740931865, -17.322729692291919 ], [ 34.892165082343496, -17.322707088759937 ], [ 34.892286490418904, -17.32269056557811 ], [ 34.892408632398393, -17.32268016803253 ], [ 34.89253117351118, -17.322675924619965 ], [ 34.892653777892725, -17.322677846969675 ], [ 34.892776109505235, -17.322685929811669 ], [ 34.892897833058612, -17.322700150991011 ], [ 34.893018614929247, -17.322720471528676 ], [ 34.893138124074405, -17.322746835728307 ], [ 34.893256032939391, -17.322779171328932 ], [ 34.893372018355308, -17.322817389702962 ], [ 34.893485762424611, -17.322861386099067 ], [ 34.893596953392439, -17.322911039929352 ], [ 34.89370528650096, -17.322966215099775 ], [ 34.893810464824533, -17.323026760383154 ], [ 34.893912200083612, -17.3230925098336 ], [ 34.894010213434655, -17.323163283241353 ], [ 34.894104236234512, -17.323238886626648 ], [ 34.894194010776616, -17.323319112771372 ], [ 34.89423852225147, -17.323363284353789 ], [ 34.892592473294087, -17.324940604483569 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900331858463275, -17.322163720229909 ], [ 34.900551100160158, -17.32491517010353 ], [ 34.897565743794004, -17.325142207305205 ], [ 34.89756504241015, -17.325134608564934 ], [ 34.89755953787251, -17.324988073109029 ], [ 34.897562025399424, -17.324841461768788 ], [ 34.897572498153679, -17.324695176397274 ], [ 34.897590927411045, -17.324549617953146 ], [ 34.897617262639329, -17.324405185401652 ], [ 34.897651431636909, -17.324262274621056 ], [ 34.897693340730996, -17.324121277317641 ], [ 34.897742875034517, -17.323982579952059 ], [ 34.897799898761171, -17.323846562680117 ], [ 34.897864255597824, -17.32371359831081 ], [ 34.897935769133142, -17.323584051284573 ], [ 34.898014243341194, -17.323458276674447 ], [ 34.898099463118982, -17.323336619212824 ], [ 34.898191194876041, -17.323219412346742 ], [ 34.898289187174854, -17.323106977324002 ], [ 34.898393171420096, -17.322999622312651 ], [ 34.898502862594867, -17.322897641556505 ], [ 34.89861796004196, -17.322801314568704 ], [ 34.898738148287975, -17.322710905365678 ], [ 34.898863097907935, -17.322626661743598 ], [ 34.898992466428268, -17.322548814599326 ], [ 34.899125899265393, -17.322477577297583 ], [ 34.89926303069759, -17.322413145086237 ], [ 34.899403484867264, -17.322355694561299 ], [ 34.899546876811073, -17.322305383182883 ], [ 34.89969281351496, -17.322262348843783 ], [ 34.899840894991208, -17.322226709491549 ], [ 34.899990715374656, -17.322198562805294 ], [ 34.900141864034907, -17.322177985928029 ], [ 34.900293926701728, -17.322165035255239 ], [ 34.900331858463275, -17.322163720229909 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.907099870341185, -17.322607987848503 ], [ 34.906021160934294, -17.32453810278799 ], [ 34.903896908377526, -17.323502846894009 ], [ 34.903917242324283, -17.323466009089106 ], [ 34.903980271340309, -17.323364982123337 ], [ 34.904048718674474, -17.323267261990232 ], [ 34.904122396711607, -17.323173116528974 ], [ 34.904201103500704, -17.323082803780501 ], [ 34.904284623308548, -17.322996571280285 ], [ 34.904372727211005, -17.322914655379957 ], [ 34.90446517372056, -17.32283728059944 ], [ 34.90456170944816, -17.32276465901176 ], [ 34.904662069797851, -17.322696989661715 ], [ 34.904765979691838, -17.322634458020435 ], [ 34.904873154324569, -17.322577235477077 ], [ 34.90498329994324, -17.322525478869093 ], [ 34.905096114652899, -17.322479330052449 ], [ 34.905211289243852, -17.322438915512812 ], [ 34.905328508039148, -17.322404346018985 ], [ 34.905447449759642, -17.322375716319311 ], [ 34.905567788404575, -17.322353104881994 ], [ 34.905689194144998, -17.322336573680126 ], [ 34.905811334227622, -17.322326168021803 ], [ 34.905933873886852, -17.322321916426024 ], [ 34.906056477262126, -17.322323830544466 ], [ 34.90617880831843, -17.32233190512968 ], [ 34.906300531767172, -17.322346118049349 ], [ 34.906421313985021, -17.322366430347106 ], [ 34.906540823928317, -17.322392786349138 ], [ 34.906658734040178, -17.322425113816962 ], [ 34.906774721148288, -17.322463324145243 ], [ 34.90688846735047, -17.32250731260471 ], [ 34.906999660886036, -17.322556958629232 ], [ 34.907099870341185, -17.322607987848503 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911721763444021, -17.327270799151147 ], [ 34.909685584378018, -17.325148690849765 ], [ 34.909715691499358, -17.325120697051958 ], [ 34.90983078373403, -17.325024364110629 ], [ 34.909950967164427, -17.324933948628292 ], [ 34.910075912378765, -17.32484969841833 ], [ 34.910205276915569, -17.324771844395649 ], [ 34.910338706202126, -17.3247005999438 ], [ 34.910475834526437, -17.324636160330265 ], [ 34.910616286039428, -17.324578702171344 ], [ 34.910759675785044, -17.324528382948049 ], [ 34.910905610755215, -17.32448534057465 ], [ 34.911053690967016, -17.324449693020743 ], [ 34.911203510558707, -17.324421537987895 ], [ 34.911354658902077, -17.324400952641973 ], [ 34.911506721727747, -17.324387993401679 ], [ 34.911659282260466, -17.324382695783971 ], [ 34.911811922361267, -17.324385074306729 ], [ 34.911964223673273, -17.324395122449015 ], [ 34.912115768768309, -17.324412812668925 ], [ 34.912266142290733, -17.32443809647912 ], [ 34.912414932095714, -17.324470904579723 ], [ 34.912561730378727, -17.324511147048252 ], [ 34.912706134793041, -17.324558713586011 ], [ 34.912847749552412, -17.32461347382046 ], [ 34.91298618651571, -17.324675277662489 ], [ 34.913121066250604, -17.32474395571769 ], [ 34.913252019073362, -17.32481931975067 ], [ 34.913378686062146, -17.324901163200888 ], [ 34.91350072004051, -17.32498926174873 ], [ 34.913617786528953, -17.325083373930308 ], [ 34.913729564661651, -17.325183241799166 ], [ 34.913835748065821, -17.325288591633232 ], [ 34.913936045701512, -17.325399134684982 ], [ 34.914030182659175, -17.325514567972732 ], [ 34.914031362474837, -17.325516182075784 ], [ 34.911721763444021, -17.327270799151147 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896270521422032, -17.345778057340958 ], [ 34.894633955948727, -17.344108401435214 ], [ 34.894659373611468, -17.344084773603896 ], [ 34.894751834385303, -17.344007402050345 ], [ 34.894848384675079, -17.343934783858305 ], [ 34.894948759844887, -17.343867118063262 ], [ 34.895052684776374, -17.343804590126624 ], [ 34.895159874622749, -17.343747371427341 ], [ 34.895270035589526, -17.343695618792371 ], [ 34.895382865739712, -17.343649474066748 ], [ 34.895498055821321, -17.343609063724955 ], [ 34.895615290114932, -17.343574498524291 ], [ 34.895734247298968, -17.343545873201311 ], [ 34.895854601330292, -17.343523266212244 ], [ 34.895976022337791, -17.343506739517984 ], [ 34.896098177526369, -17.343496338414269 ], [ 34.896220732089027, -17.343492091407629 ], [ 34.896343350124383, -17.343494010137192 ], [ 34.896465695557261, -17.343502089342831 ], [ 34.896587433059651, -17.343516306879611 ], [ 34.896708228969764, -17.343536623778476 ], [ 34.896827752206391, -17.343562984353067 ], [ 34.896945675176234, -17.343595316352321 ], [ 34.897061674671747, -17.343633531158535 ], [ 34.897175432756811, -17.343677524030166 ], [ 34.897286637638175, -17.34372717438897 ], [ 34.897394984519835, -17.34378234615043 ], [ 34.897500176438477, -17.343842888096699 ], [ 34.897601925077247, -17.343908634291068 ], [ 34.897699951556, -17.343979404532686 ], [ 34.89779398719557, -17.344055004850485 ], [ 34.89788377425419, -17.344135228034745 ], [ 34.897969066633934, -17.344219854204994 ], [ 34.898018534309401, -17.34427437726421 ], [ 34.896270521422032, -17.345778057340958 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8993698935897, -17.3404132919784 ], [ 34.899977306418968, -17.342598676400389 ], [ 34.897632654475345, -17.343156624592137 ], [ 34.897616064985897, -17.343093039404593 ], [ 34.897592524699924, -17.342977452198006 ], [ 34.897575315514821, -17.342860840179966 ], [ 34.897564484588315, -17.342743522978669 ], [ 34.897560061595343, -17.342625822154599 ], [ 34.897562058646876, -17.342508060319165 ], [ 34.897570470256781, -17.342390560250386 ], [ 34.897585273357109, -17.34227364400817 ], [ 34.89760642736136, -17.342157632051599 ], [ 34.897633874275868, -17.34204284236052 ], [ 34.897667538859004, -17.341929589564067 ], [ 34.897707328827337, -17.341818184078249 ], [ 34.8977531351089, -17.341708931255134 ], [ 34.897804832142121, -17.341602130545965 ], [ 34.89786227822016, -17.341498074680427 ], [ 34.89792531587937, -17.341397048864266 ], [ 34.89799377233102, -17.341299329997696 ], [ 34.898067459934943, -17.341205185916401 ], [ 34.898146176713922, -17.341114874657549 ], [ 34.898229706907351, -17.341028643752509 ], [ 34.898317821562657, -17.34094672954852 ], [ 34.898410279162817, -17.340869356560894 ], [ 34.898506826288433, -17.340796736857698 ], [ 34.89860719831227, -17.340729069478559 ], [ 34.898711120124595, -17.340666539889227 ], [ 34.898818306887151, -17.340609319473213 ], [ 34.898928464813913, -17.340557565062127 ], [ 34.899041291976218, -17.34051141850593 ], [ 34.899156479130262, -17.34047100628408 ], [ 34.899273710564628, -17.340436439159028 ], [ 34.8993698935897, -17.3404132919784 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906533452371185, -17.338050305737823 ], [ 34.909113153334729, -17.34030905206204 ], [ 34.906860112803329, -17.342790160574449 ], [ 34.906785146846069, -17.342729896748654 ], [ 34.90665424850053, -17.342612951146734 ], [ 34.906529902534977, -17.342489586312865 ], [ 34.906412449774884, -17.342360140393918 ], [ 34.906302212149164, -17.34222496820469 ], [ 34.906199491807826, -17.342084440255348 ], [ 34.906104570293813, -17.341938941735673 ], [ 34.906017707771433, -17.341788871459226 ], [ 34.905939142313287, -17.341634640770003 ], [ 34.905869089247915, -17.341476672414917 ], [ 34.905807740569742, -17.341315399384907 ], [ 34.905755264412988, -17.341151263728026 ], [ 34.905711804591036, -17.340984715337761 ], [ 34.905677480202478, -17.340816210719719 ], [ 34.90565238530489, -17.340646211740392 ], [ 34.905636588657302, -17.340475184361022 ], [ 34.905630133532, -17.340303597360474 ], [ 34.905633037596203, -17.340131921050247 ], [ 34.905645292863881, -17.339960625985302 ], [ 34.905666865717976, -17.339790181674402 ], [ 34.905697697002793, -17.339621055293083 ], [ 34.905737702186485, -17.339453710403209 ], [ 34.905786771592958, -17.339288605682437 ], [ 34.905844770702799, -17.339126193667006 ], [ 34.905911540522254, -17.338966919511417 ], [ 34.905986898019179, -17.338811219768395 ], [ 34.906070636625088, -17.338659521192326 ], [ 34.906162526801396, -17.338512239569724 ], [ 34.906262316668872, -17.338369778579619 ], [ 34.90636973269811, -17.338232528687239 ], [ 34.906484480459412, -17.338100866073905 ], [ 34.906533452371185, -17.338050305737823 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913379761071603, -17.335625170111705 ], [ 34.911437392245574, -17.333407717834426 ], [ 34.911460462998669, -17.333388407832093 ], [ 34.911580650515376, -17.333297990941542 ], [ 34.911705600115177, -17.333213739250976 ], [ 34.911834969324552, -17.33313588367934 ], [ 34.911968403558056, -17.333064637614456 ], [ 34.912105537090085, -17.333000196328197 ], [ 34.912245994057315, -17.332942736441435 ], [ 34.91238938948873, -17.33289241543994 ], [ 34.912535330360718, -17.332849371242844 ], [ 34.912683416674128, -17.332813721824717 ], [ 34.912833242550533, -17.332785564892241 ], [ 34.912984397344523, -17.332764977616499 ], [ 34.913136466769025, -17.332752016421484 ], [ 34.913289034030726, -17.33274671682949 ], [ 34.913441680972198, -17.332749093363816 ], [ 34.913593989217865, -17.332759139508962 ], [ 34.91374554132053, -17.332776827728509 ], [ 34.913895921905365, -17.332802109540605 ], [ 34.914044718808199, -17.332834915650842 ], [ 34.914191524205023, -17.332875156142183 ], [ 34.914335935729667, -17.332922720721363 ], [ 34.914477557576397, -17.332977479021213 ], [ 34.914616001584655, -17.333039280957927 ], [ 34.914750888302791, -17.333107957142325 ], [ 34.914881848028003, -17.333183319344126 ], [ 34.915008521819459, -17.333265161007834 ], [ 34.915130562482133, -17.333353257818729 ], [ 34.915247635518178, -17.333447368317675 ], [ 34.915359420043842, -17.33354723456284 ], [ 34.915465609668836, -17.333652582836624 ], [ 34.915518445366438, -17.33371081141938 ], [ 34.913379761071603, -17.335625170111705 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.920240082361659, -17.336946735747041 ], [ 34.922942052048946, -17.33414882953203 ], [ 34.923015700072284, -17.334214619847671 ], [ 34.92315957577275, -17.334357343654762 ], [ 34.923295477304066, -17.334507103771536 ], [ 34.923423032168401, -17.33466348973268 ], [ 34.923541890741852, -17.334826072912001 ], [ 34.923651727232865, -17.334994407696968 ], [ 34.923752240575283, -17.335168032709991 ], [ 34.923843155253664, -17.335346472072818 ], [ 34.923924222058574, -17.335529236710677 ], [ 34.92399521876996, -17.335715825692713 ], [ 34.924055950766373, -17.335905727604761 ], [ 34.924106251558761, -17.336098421951011 ], [ 34.924145983247044, -17.336293380580464 ], [ 34.924175036898419, -17.336490069134513 ], [ 34.924193332846301, -17.336687948511432 ], [ 34.924200820909014, -17.336886476343878 ], [ 34.924197480527702, -17.337085108485553 ], [ 34.924183320823069, -17.337283300502477 ], [ 34.924158380570788, -17.337480509165285 ], [ 34.924122728095575, -17.337676193938162 ], [ 34.924076461084262, -17.337869818460412 ], [ 34.924019706318504, -17.338060852016596 ], [ 34.923952619327601, -17.338248770991257 ], [ 34.923875383962496, -17.338433060304176 ], [ 34.923788211892266, -17.338613214822228 ], [ 34.923691342024206, -17.338788740744029 ], [ 34.923585039849272, -17.338959156953514 ], [ 34.923469596714675, -17.339123996338795 ], [ 34.923345329025501, -17.339282807072621 ], [ 34.923212577377683, -17.339435153850914 ], [ 34.923199307657669, -17.339448856263918 ], [ 34.920240082361659, -17.336946735747041 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.926975301324241, -17.341756277068452 ], [ 34.929874621707043, -17.3387198647094 ], [ 34.929976827889384, -17.338811156788797 ], [ 34.930134758291622, -17.338967806549938 ], [ 34.930283936250547, -17.339132179782727 ], [ 34.930423952878314, -17.339303825971783 ], [ 34.930554424393229, -17.339482274667148 ], [ 34.930674993171756, -17.339667036773445 ], [ 34.930785328728838, -17.339857605890288 ], [ 34.930885128623856, -17.340053459700087 ], [ 34.930974119289864, -17.340254061399367 ], [ 34.931052056783614, -17.340458861170085 ], [ 34.931118727454496, -17.340667297686302 ], [ 34.931173948530414, -17.340878799652643 ], [ 34.931217568619211, -17.341092787369995 ], [ 34.93124946812388, -17.341308674324267 ], [ 34.931269559570865, -17.34152586879387 ], [ 34.931277787850235, -17.341743775471489 ], [ 34.931274130367186, -17.341961797095689 ], [ 34.931258597104346, -17.342179336087895 ], [ 34.931231230595053, -17.342395796190306 ], [ 34.931192105807014, -17.342610584100129 ], [ 34.931141329937518, -17.342823111095818 ], [ 34.93107904211984, -17.343032794650775 ], [ 34.93100541304252, -17.343239060030005 ], [ 34.930920644481787, -17.343441341865585 ], [ 34.930824968748979, -17.34363908570629 ], [ 34.930718648054125, -17.343831749537522 ], [ 34.930601973787617, -17.344018805267019 ], [ 34.930475265721768, -17.344199740172474 ], [ 34.930338871134673, -17.344374058307057 ], [ 34.930206135800262, -17.344526394378821 ], [ 34.926975301324241, -17.341756277068452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.930918907739319, -17.350619195960071 ], [ 34.933686532028823, -17.34741850738671 ], [ 34.936891437505039, -17.35009147006711 ], [ 34.936870614319417, -17.350115369252237 ], [ 34.936715995799332, -17.350275044792941 ], [ 34.936552887205806, -17.350426730058501 ], [ 34.936381735605124, -17.350570009270172 ], [ 34.936203010113339, -17.350704489689271 ], [ 34.936017200610422, -17.35082980269403 ], [ 34.93582481639752, -17.350945604790095 ], [ 34.935626384800806, -17.351051578552209 ], [ 34.935422449725991, -17.351147433494578 ], [ 34.935213570167356, -17.351232906867171 ], [ 34.935000318675286, -17.351307764376163 ], [ 34.934783279786686, -17.351371800826296 ], [ 34.934563048422454, -17.351424840683471 ], [ 34.93434022825658, -17.351466738556034 ], [ 34.934115430061013, -17.351497379593461 ], [ 34.933889270031244, -17.351516679801193 ], [ 34.933662368096904, -17.351524586271111 ], [ 34.933435346222147, -17.351521077326474 ], [ 34.933208826700387, -17.351506162581522 ], [ 34.932983430448253, -17.351479882915079 ], [ 34.932759775303161, -17.351442310358582 ], [ 34.932538474329434, -17.351393547898589 ], [ 34.932320134137491, -17.351333729194508 ], [ 34.932105353220734, -17.351263018212201 ], [ 34.931894720314659, -17.351181608774432 ], [ 34.931688812782838, -17.351089724029563 ], [ 34.931488195034035, -17.350987615839795 ], [ 34.931293416974796, -17.350875564090668 ], [ 34.931105012501995, -17.350753875923818 ], [ 34.930923498039114, -17.350622884894868 ], [ 34.930918907739319, -17.350619195960071 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961161225337996, -17.342695153682683 ], [ 34.963463180156758, -17.345951999810669 ], [ 34.963432746238198, -17.345972531590462 ], [ 34.963250401228407, -17.34608232777347 ], [ 34.963062322565051, -17.346182808203306 ], [ 34.962869025775234, -17.346273697452876 ], [ 34.962671040692122, -17.346354746384645 ], [ 34.962468910002343, -17.346425732833538 ], [ 34.962263187758481, -17.346486462216212 ], [ 34.962054437859955, -17.346536768064457 ], [ 34.961843232507221, -17.346576512481615 ], [ 34.961630150633034, -17.34660558652071 ], [ 34.961415776315228, -17.346623910483206 ], [ 34.961200697175478, -17.346631434137443 ], [ 34.960985502768224, -17.346628136856513 ], [ 34.960770782964332, -17.346614027674772 ], [ 34.960557126333896, -17.346589145263163 ], [ 34.960345118532622, -17.346553557823199 ], [ 34.960135340696091, -17.346507362900038 ], [ 34.959928367846587, -17.346450687115105 ], [ 34.959724767316587, -17.346383685818981 ], [ 34.959525097193278, -17.346306542665452 ], [ 34.959329904788703, -17.346219469108206 ], [ 34.959139725139103, -17.34612270382096 ], [ 34.958955079538242, -17.346016512043306 ], [ 34.958776474108255, -17.345901184853453 ], [ 34.958604398412149, -17.345777038370297 ], [ 34.958439324111843, -17.345644412886852 ], [ 34.958281703675084, -17.345503671937216 ], [ 34.958131969135259, -17.345355201300144 ], [ 34.957990530907111, -17.345199407941248 ], [ 34.95785777666174, -17.345036718897553 ], [ 34.957734070264131, -17.344867580106648 ], [ 34.957665162047512, -17.344762020273741 ], [ 34.961161225337996, -17.342695153682683 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978354668011164, -17.346604682049772 ], [ 34.977997053286906, -17.349855632180109 ], [ 34.977869135434879, -17.349840746730006 ], [ 34.977691568440811, -17.349810957379173 ], [ 34.977515868251459, -17.349772283910664 ], [ 34.977342516473946, -17.349724832328775 ], [ 34.977171988277505, -17.349668732699339 ], [ 34.977004751090774, -17.349604138793072 ], [ 34.976841263320381, -17.349531227664105 ], [ 34.976681973094188, -17.349450199164586 ], [ 34.976527317032911, -17.349361275396888 ], [ 34.97637771905309, -17.34926470010463 ], [ 34.976233589205009, -17.349160738004564 ], [ 34.976095322548673, -17.349049674060865 ], [ 34.975963298070845, -17.348931812703938 ], [ 34.975837877646171, -17.348807476995859 ], [ 34.97571940504529, -17.348677007744797 ], [ 34.97560820499254, -17.348540762570682 ], [ 34.975504582275924, -17.34839911492486 ], [ 34.975408820911731, -17.348252453066394 ], [ 34.975321183366191, -17.348101178997709 ], [ 34.9752419098361, -17.347945707362602 ], [ 34.975171217590642, -17.347786464309539 ], [ 34.975109300375976, -17.347623886323589 ], [ 34.975056327884417, -17.347458419029859 ], [ 34.975012445289508, -17.347290515971977 ], [ 34.974977772848305, -17.34712063736885 ], [ 34.974952405572012, -17.346949248853143 ], [ 34.974936412965867, -17.346776820194972 ], [ 34.974929838838861, -17.346603824014135 ], [ 34.974932701183953, -17.346430734484802 ], [ 34.974944992128989, -17.346258026035596 ], [ 34.974946239091686, -17.346248144213522 ], [ 34.978354668011164, -17.346604682049772 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981679444479695, -17.339111001077271 ], [ 34.981414279389675, -17.341507128753143 ], [ 34.979069772171925, -17.341221754105334 ], [ 34.97907218780167, -17.341187800312291 ], [ 34.979087294041641, -17.341068065924567 ], [ 34.979108904300226, -17.340949254926347 ], [ 34.979136959332656, -17.340831692969534 ], [ 34.979171382229808, -17.340715702281784 ], [ 34.979212078629267, -17.340601600783437 ], [ 34.979258936974006, -17.340489701216075 ], [ 34.979311828818311, -17.340380310285358 ], [ 34.979370609179981, -17.340273727820453 ], [ 34.979435116937729, -17.340170245952184 ], [ 34.979505175273005, -17.340070148312417 ], [ 34.979580592154655, -17.339973709256714 ], [ 34.979661160865334, -17.339881193112319 ], [ 34.979746660568168, -17.339792853453819 ], [ 34.979836856912151, -17.339708932408108 ], [ 34.979931502674376, -17.33962965999083 ], [ 34.9800303384378, -17.339555253475954 ], [ 34.980133093302214, -17.339485916800367 ], [ 34.980239485626747, -17.339421840004896 ], [ 34.980349223801831, -17.339363198713549 ], [ 34.980462007048374, -17.339310153652161 ], [ 34.980577526242143, -17.339262850207973 ], [ 34.980695464761006, -17.339221418031112 ], [ 34.98081549935263, -17.339185970679388 ], [ 34.980937301020425, -17.339156605307025 ], [ 34.981060535925209, -17.339133402398442 ], [ 34.981184866300069, -17.339116425547651 ], [ 34.981309951376097, -17.339105721284096 ], [ 34.981435448316205, -17.339101318945044 ], [ 34.98156101315476, -17.339103230595249 ], [ 34.981679444479695, -17.339111001077271 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975949718590073, -17.343237636498074 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.978926265695563, -17.341206981511462 ], [ 34.978913049912912, -17.341279639946706 ], [ 34.978882794231374, -17.341406422427387 ], [ 34.978845671151007, -17.341531510388236 ], [ 34.978801782409981, -17.341654560969456 ], [ 34.978751248291495, -17.341775236894811 ], [ 34.978694207294154, -17.341893207396165 ], [ 34.978630815752453, -17.342008149120165 ], [ 34.978561247408479, -17.342119747014557 ], [ 34.978485692935763, -17.342227695191749 ], [ 34.978404359416693, -17.342331697767307 ], [ 34.978317469775135, -17.342431469671059 ], [ 34.978225262165303, -17.342526737428432 ], [ 34.978127989319184, -17.342617239910208 ], [ 34.97802591785377, -17.342702729048238 ], [ 34.97791932754032, -17.34278297051554 ], [ 34.977808510537486, -17.342857744368597 ], [ 34.977693770590584, -17.34292684565029 ], [ 34.97757542219891, -17.342990084951776 ], [ 34.977453789753753, -17.343047288931722 ], [ 34.977329206649109, -17.343098300791471 ], [ 34.977202014367826, -17.343142980704894 ], [ 34.977072561545548, -17.343181206201727 ], [ 34.976941203014952, -17.343212872503312 ], [ 34.97680829883312, -17.343237892809821 ], [ 34.97667421329443, -17.343256198538253 ], [ 34.976539313931994, -17.343267739510448 ], [ 34.976403970510042, -17.34327248409063 ], [ 34.976268554010332, -17.343270419272212 ], [ 34.976133435615104, -17.343261550713425 ], [ 34.975998985689543, -17.343245902721812 ], [ 34.975949718590073, -17.343237636498074 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976816384818314, -17.338238223714697 ], [ 34.976762738159529, -17.338203588832894 ], [ 34.976658388456634, -17.338128315241242 ], [ 34.976558283695852, -17.3380478996406 ], [ 34.976462698261315, -17.337962562450763 ], [ 34.976371894148514, -17.33787253758145 ], [ 34.976286120246264, -17.337778071791206 ], [ 34.976205611654429, -17.337679424010897 ], [ 34.97613058903957, -17.337576864633927 ], [ 34.976061258030121, -17.337470674775066 ], [ 34.975997808652856, -17.337361145499887 ], [ 34.975940414812008, -17.337248577026841 ], [ 34.975889233812737, -17.337133277904332 ], [ 34.975844405930061, -17.337015564164975 ], [ 34.97580605402436, -17.336895758459242 ], [ 34.97577428320492, -17.336774189171134 ], [ 34.975749180541747, -17.336651189517951 ], [ 34.975730814827195, -17.336527096636967 ], [ 34.975719236387441, -17.336402250661358 ], [ 34.975714476944766, -17.336276993787809 ], [ 34.975716549530709, -17.336151669338609 ], [ 34.975725448450497, -17.336026620820551 ], [ 34.975741149298841, -17.33590219098344 ], [ 34.975763609026941, -17.335778720880647 ], [ 34.975792766060671, -17.335656548934217 ], [ 34.975828540469436, -17.335536010007385 ], [ 34.975870834185486, -17.335417434486722 ], [ 34.975919531272815, -17.335301147376583 ], [ 34.975974498245002, -17.335187467408328 ], [ 34.976035584431322, -17.335076706166753 ], [ 34.976102622389732, -17.334969167236075 ], [ 34.976145471591806, -17.334907946244652 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.976973009965533, -17.338311269909727 ], [ 34.976816384818314, -17.338238223714697 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.965141978743468, -17.34115131321493 ], [ 34.96697037363257, -17.340380748223968 ], [ 34.967862993493888, -17.342116599326115 ], [ 34.967767121182092, -17.342155850020827 ], [ 34.967665828053995, -17.342191426810356 ], [ 34.967562734991439, -17.342221863436112 ], [ 34.967458124572644, -17.342247076470123 ], [ 34.967352283535391, -17.342266996802234 ], [ 34.96724550199103, -17.342281569829609 ], [ 34.967138072629211, -17.342290755606424 ], [ 34.967030289915506, -17.342294528953374 ], [ 34.966922449284276, -17.342292879526671 ], [ 34.966814846328695, -17.342285811846477 ], [ 34.966707775990557, -17.342273345284447 ], [ 34.966601531751685, -17.342255514010727 ], [ 34.966496404829407, -17.342232366900181 ], [ 34.966392683378324, -17.342203967398536 ], [ 34.966290651700341, -17.342170393348415 ], [ 34.966190589465299, -17.342131736775904 ], [ 34.966092770944378, -17.342088103638435 ], [ 34.965997464258237, -17.342039613534183 ], [ 34.965904930642061, -17.341986399374331 ], [ 34.965815423729424, -17.341928607018694 ], [ 34.965729188857061, -17.34186639487589 ], [ 34.965646462392378, -17.341799933469115 ], [ 34.965567471085528, -17.341729404968714 ], [ 34.965492431447899, -17.341655002692814 ], [ 34.965421549158599, -17.341576930577368 ], [ 34.965355018500752, -17.34149540261722 ], [ 34.965293021828984, -17.34141064227941 ], [ 34.965235729069583, -17.341322881890694 ], [ 34.965183297254761, -17.341232362000632 ], [ 34.965141978743468, -17.34115131321493 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970773107481506, -17.335663616039604 ], [ 34.970354223381719, -17.338412629071641 ], [ 34.970344564689924, -17.338411504611443 ], [ 34.970194661483319, -17.338386347845049 ], [ 34.970046334609464, -17.338353690604716 ], [ 34.96989999063991, -17.338313622403852 ], [ 34.96975603071045, -17.338266253069662 ], [ 34.969614849421397, -17.338211712442192 ], [ 34.969476833755884, -17.338150150018279 ], [ 34.969342362018992, -17.338081734541827 ], [ 34.969211802800672, -17.338006653541218 ], [ 34.969085513965389, -17.337925112815231 ], [ 34.968963841671005, -17.337837335868841 ], [ 34.968847119420062, -17.337743563300634 ], [ 34.96873566714541, -17.337644052143105 ], [ 34.96862979033336, -17.337539075158222 ], [ 34.968529779186312, -17.337428920089575 ], [ 34.968435907827235, -17.337313888873631 ], [ 34.968348433548449, -17.3371942968121 ], [ 34.968267596106315, -17.337070471707587 ], [ 34.968193617064209, -17.336942752964909 ], [ 34.968126699185284, -17.336811490660896 ], [ 34.968067025876756, -17.336677044584633 ], [ 34.96801476068736, -17.336539783251222 ], [ 34.967970046859186, -17.33640008289165 ], [ 34.967933006935205, -17.336258326421515 ], [ 34.967903742423537, -17.336114902391344 ], [ 34.967882333519427, -17.335970203921576 ], [ 34.967868838885579, -17.335824627624998 ], [ 34.967863295491597, -17.335678572519573 ], [ 34.967865718512797, -17.335532438934763 ], [ 34.967876101288894, -17.335386627414191 ], [ 34.967894415342442, -17.335241537617812 ], [ 34.967900765229288, -17.335206638144747 ], [ 34.970773107481506, -17.335663616039604 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975967002903133, -17.329006613978088 ], [ 34.977225538507916, -17.327402417183986 ], [ 34.977276534416632, -17.327439206013974 ], [ 34.977359257505945, -17.327505662931092 ], [ 34.977438246093733, -17.327576187031788 ], [ 34.977513283679436, -17.327650585018809 ], [ 34.977584164590994, -17.327728652976958 ], [ 34.97765069454843, -17.327810176931923 ], [ 34.97771269119648, -17.327894933436831 ], [ 34.977769984604379, -17.327982690184498 ], [ 34.97782241773163, -17.328073206644273 ], [ 34.977869846858539, -17.328166234721127 ], [ 34.977912141980134, -17.328261519435703 ], [ 34.977949187162594, -17.328358799623132 ], [ 34.977980880861054, -17.328457808648796 ], [ 34.978007136197959, -17.328558275139187 ], [ 34.978027881201406, -17.328659923725571 ], [ 34.978043059002367, -17.328762475798857 ], [ 34.978052627990678, -17.328865650273102 ], [ 34.978056561929264, -17.328969164356007 ], [ 34.978054850026062, -17.329072734323933 ], [ 34.978047496963782, -17.329176076299639 ], [ 34.978034522887093, -17.329278907030307 ], [ 34.978015963347566, -17.329380944663903 ], [ 34.977991869206356, -17.329481909521785 ], [ 34.977962306494838, -17.329581524865198 ], [ 34.977927356233742, -17.329679517653869 ], [ 34.977887114211171, -17.329775619294388 ], [ 34.97784169072019, -17.329869566376452 ], [ 34.977791210256534, -17.32996110139484 ], [ 34.977735811177453, -17.330049973455242 ], [ 34.97768378767087, -17.330124305102657 ], [ 34.975967002903133, -17.329006613978088 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964728870983024, -17.336051561916904 ], [ 34.967428748672695, -17.335013069641263 ], [ 34.967469972171351, -17.335121335030792 ], [ 34.967514685216699, -17.335261035588786 ], [ 34.967551724543249, -17.335402792202579 ], [ 34.967580988613044, -17.335546216333061 ], [ 34.967602397198554, -17.335690914869808 ], [ 34.967615891602726, -17.335836491208521 ], [ 34.967621434820103, -17.335982546338016 ], [ 34.967619011638341, -17.336128679933918 ], [ 34.967608628680289, -17.336274491455832 ], [ 34.967590314385895, -17.336419581245202 ], [ 34.967564118934519, -17.33656355162071 ], [ 34.96753011410761, -17.336706007968349 ], [ 34.96748839309214, -17.336846559823023 ], [ 34.967439070225389, -17.336984821938778 ], [ 34.967382280681733, -17.337120415344799 ], [ 34.967318180102346, -17.337252968384213 ], [ 34.967246944168728, -17.337382117732766 ], [ 34.96716876812134, -17.337507509394726 ], [ 34.967083866224598, -17.33762879967334 ], [ 34.966992471179729, -17.337745656112833 ], [ 34.966894833487004, -17.337857758409786 ], [ 34.966791220759234, -17.337964799291147 ], [ 34.96668191698835, -17.338066485356531 ], [ 34.966567221766972, -17.338162537882528 ], [ 34.966447449467367, -17.338252693586735 ], [ 34.966322928379626, -17.338336705349501 ], [ 34.966193999811964, -17.338414342891376 ], [ 34.966061017155035, -17.33848539340439 ], [ 34.966003469280459, -17.338512454706869 ], [ 34.964728870983024, -17.336051561916904 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957010326871092, -17.336809457524954 ], [ 34.955242480798987, -17.334332157368866 ], [ 34.955350420930586, -17.334267165729322 ], [ 34.955492013053238, -17.334191523989539 ], [ 34.955637532828916, -17.334123103067494 ], [ 34.95578658140937, -17.3340620904909 ], [ 34.955938750276061, -17.334008653482151 ], [ 34.956093622359603, -17.333962938500228 ], [ 34.956250773182859, -17.333925070839225 ], [ 34.95640977202418, -17.333895154285123 ], [ 34.956570183097803, -17.33387327083128 ], [ 34.956731566748068, -17.333859480453818 ], [ 34.95689348065433, -17.333853820947308 ], [ 34.957055481043014, -17.333856307821161 ], [ 34.957217123903831, -17.333866934257205 ], [ 34.957377966206458, -17.333885671128321 ], [ 34.957537567114713, -17.333912467078409 ], [ 34.957695489194478, -17.333947248662994 ], [ 34.957851299612628, -17.333989920550646 ], [ 34.958004571322995, -17.334040365784176 ], [ 34.958154884236826, -17.334098446101205 ], [ 34.958301826373862, -17.33416400231307 ], [ 34.958444994991495, -17.334236854741064 ], [ 34.958583997688393, -17.334316803708923 ], [ 34.958718453479904, -17.334403630089952 ], [ 34.958847993842262, -17.334497095907654 ], [ 34.958972263722472, -17.334596944987808 ], [ 34.9590909225114, -17.33470290366062 ], [ 34.959203644977393, -17.33481468151064 ], [ 34.959310122157575, -17.33493197217275 ], [ 34.959410062204682, -17.335054454171708 ], [ 34.959503191187082, -17.335181791803198 ], [ 34.959540353269119, -17.335238722501 ], [ 34.957010326871092, -17.336809457524954 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.960619385935466, -17.330692249633707 ], [ 34.961187884958441, -17.334400587778653 ], [ 34.961072028950504, -17.334416395801075 ], [ 34.960867969605161, -17.334433837419532 ], [ 34.960663239453304, -17.33444099772812 ], [ 34.960458399679979, -17.334437857096304 ], [ 34.96025401177112, -17.334424424129391 ], [ 34.960050635974234, -17.334400735644973 ], [ 34.959848829762414, -17.334366856572057 ], [ 34.959649146305892, -17.33432287977303 ], [ 34.959452132955583, -17.334268925789214 ], [ 34.959258329742404, -17.334205142510285 ], [ 34.959068267896775, -17.334131704768978 ], [ 34.958882468392225, -17.334048813861745 ], [ 34.958701440517132, -17.333956696996925 ], [ 34.958525680478566, -17.333855606671875 ], [ 34.958355670041925, -17.333745819980795 ], [ 34.958191875210261, -17.333627637855024 ], [ 34.958034744946829, -17.333501384238147 ], [ 34.957884709944366, -17.333367405197862 ], [ 34.957742181444438, -17.333226067977272 ], [ 34.957607550110296, -17.333077759988161 ], [ 34.957481184955945, -17.332922887748911 ], [ 34.957363432334795, -17.332761875770107 ], [ 34.957254614990347, -17.332595165390771 ], [ 34.957155031171695, -17.332423213568532 ], [ 34.957064953816122, -17.332246491626936 ], [ 34.956984629801269, -17.332065483963447 ], [ 34.956914279268503, -17.331880686721558 ], [ 34.956854095019878, -17.331692606430721 ], [ 34.956804241989921, -17.331501758617907 ], [ 34.956779145904193, -17.33137872104356 ], [ 34.960619385935466, -17.330692249633707 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955236330182871, -17.33431716598372 ], [ 34.953639390624843, -17.331963065750791 ], [ 34.956244881516085, -17.330425794331145 ], [ 34.956261331297341, -17.330450996469615 ], [ 34.956336256917439, -17.330580374246498 ], [ 34.956404030135602, -17.330713340954052 ], [ 34.956464465179891, -17.330849532148207 ], [ 34.956517396390062, -17.330988574546339 ], [ 34.956562678671851, -17.33113008705028 ], [ 34.95660018789475, -17.331273681790872 ], [ 34.956629821232468, -17.331418965190952 ], [ 34.956651497444895, -17.331565539044075 ], [ 34.95666515710095, -17.33171300160593 ], [ 34.956670762741744, -17.331860948695443 ], [ 34.956668298983416, -17.33200897480253 ], [ 34.956657772559488, -17.332156674199577 ], [ 34.956639212302683, -17.332303642053507 ], [ 34.956612669066011, -17.332449475535363 ], [ 34.956578215583725, -17.33259377492443 ], [ 34.956535946272076, -17.332736144703894 ], [ 34.95648597697074, -17.3328761946449 ], [ 34.95642844462553, -17.333013540876248 ], [ 34.956363506913185, -17.33314780693653 ], [ 34.956291341809404, -17.333278624806081 ], [ 34.956212147101148, -17.333405635915714 ], [ 34.956126139844635, -17.333528492129666 ], [ 34.956033555770553, -17.333646856699861 ], [ 34.955934648638085, -17.33376040518899 ], [ 34.955829689539371, -17.333868826359854 ], [ 34.955718966156532, -17.333971823028588 ], [ 34.95560278197329, -17.33406911287927 ], [ 34.955481455443014, -17.334160429237812 ], [ 34.955355319115959, -17.334245521803091 ], [ 34.955236330182871, -17.33431716598372 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954988844373986, -17.325074100205931 ], [ 34.955577723835631, -17.328974101137693 ], [ 34.955456933590519, -17.32899057899429 ], [ 34.955237672884792, -17.329009313455341 ], [ 34.955017691779858, -17.329017000371412 ], [ 34.95479759326777, -17.329013618667915 ], [ 34.954577980662954, -17.328999177610459 ], [ 34.954359455948037, -17.328973716779579 ], [ 34.95414261812347, -17.328937305962217 ], [ 34.9539280615653, -17.328890044960499 ], [ 34.953716374395555, -17.328832063318103 ], [ 34.953508136869821, -17.328763519965111 ], [ 34.953303919786507, -17.328684602782413 ], [ 34.953104282921842, -17.328595528086584 ], [ 34.952909773495264, -17.328496540036845 ], [ 34.952720924669258, -17.328387909965802 ], [ 34.952538254087635, -17.328269935635504 ], [ 34.95236226245656, -17.328142940421166 ], [ 34.952193432171818, -17.328007272424674 ], [ 34.952032225996575, -17.327863303520239 ], [ 34.95187908579274, -17.327711428334975 ], [ 34.951734431309859, -17.32755206316698 ], [ 34.951598659034502, -17.327385644844153 ], [ 34.951472141103615, -17.32721262952661 ], [ 34.951355224284541, -17.327033491456227 ], [ 34.951248229024607, -17.326848721656539 ], [ 34.951151448573079, -17.326658826586701 ], [ 34.951065148177435, -17.326464326753069 ], [ 34.950989564356654, -17.326265755282392 ], [ 34.950924904253185, -17.326063656460345 ], [ 34.95087134506548, -17.325858584239537 ], [ 34.950829033562627, -17.325651100720965 ], [ 34.950800585931511, -17.325458685865403 ], [ 34.954988844373986, -17.325074100205931 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959429692942393, -17.324632437480492 ], [ 34.96199524794266, -17.324405539234302 ], [ 34.962917097922038, -17.326827271055144 ], [ 34.9628057726948, -17.326860136943811 ], [ 34.962670123327506, -17.326892829017506 ], [ 34.962532878449238, -17.326918657395606 ], [ 34.962394414252785, -17.326937551279997 ], [ 34.962255110273766, -17.32694945888019 ], [ 34.96211534835011, -17.326954347555368 ], [ 34.961975511575361, -17.326952203903854 ], [ 34.961835983248399, -17.326943033799861 ], [ 34.961697145822697, -17.326926862377444 ], [ 34.961559379857924, -17.326903733961579 ], [ 34.961423062976593, -17.326873711946686 ], [ 34.961288568828891, -17.326836878622842 ], [ 34.961156266068393, -17.326793334950221 ], [ 34.961026517341416, -17.326743200282376 ], [ 34.96089967829289, -17.32668661203898 ], [ 34.960776096591395, -17.326623725329195 ], [ 34.960656110976146, -17.326554712526441 ], [ 34.960540050328412, -17.326479762795923 ], [ 34.960428232769921, -17.326399081575982 ], [ 34.960320964790888, -17.326312890015025 ], [ 34.960218540409869, -17.326221424365276 ], [ 34.960121240367819, -17.326124935335116 ], [ 34.960029331358555, -17.32602368740184 ], [ 34.959943065297743, -17.325917958086681 ], [ 34.959862678632533, -17.325808037194083 ], [ 34.959788391693294, -17.325694226017156 ], [ 34.959720408089943, -17.325576836511928 ], [ 34.959658914153827, -17.32545619044215 ], [ 34.959604078427063, -17.325332618497225 ], [ 34.959556051200735, -17.325206459385821 ], [ 34.959514964103008, -17.325078058907394 ], [ 34.959480929738518, -17.324947769004307 ], [ 34.9594540413798, -17.324815946797088 ], [ 34.959434372711804, -17.324682953605588 ], [ 34.959429692942393, -17.324632437480492 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955074672069358, -17.318897254404234 ], [ 34.953055168419084, -17.319242829332627 ], [ 34.953045135325517, -17.3191749687957 ], [ 34.953035406841693, -17.319069907036841 ], [ 34.953031416182405, -17.318964500208651 ], [ 34.953033174276065, -17.318859037225231 ], [ 34.953040676293959, -17.31875380715416 ], [ 34.953053901663694, -17.318649098424061 ], [ 34.953072814125669, -17.318545198034169 ], [ 34.953097361832498, -17.318442390767569 ], [ 34.953127477491357, -17.318340958410715 ], [ 34.9531630785484, -17.31824117898103 ], [ 34.953204067415207, -17.318143325964947 ], [ 34.953250331736328, -17.318047667568258 ], [ 34.953301744697342, -17.317954465981085 ], [ 34.953358165372507, -17.317863976659215 ], [ 34.953419439111137, -17.31777644762397 ], [ 34.953485397961508, -17.317692118782404 ], [ 34.953555861131257, -17.317611221269846 ], [ 34.953630635482966, -17.317533976816364 ], [ 34.953709516063618, -17.317460597139068 ], [ 34.953792286666292, -17.317391283361872 ], [ 34.953878720422843, -17.317326225464313 ], [ 34.953968580425695, -17.317265601760816 ], [ 34.954061620377189, -17.317209578412005 ], [ 34.954157585264667, -17.3171583089694 ], [ 34.954256212059335, -17.317111933954514 ], [ 34.954357230437225, -17.317070580473761 ], [ 34.954460363520035, -17.317034361870103 ], [ 34.954565328634033, -17.317003377412487 ], [ 34.954661651915764, -17.316980166566335 ], [ 34.955074672069358, -17.318897254404234 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954026875506962, -17.314612148368443 ], [ 34.95629602563065, -17.314112227198336 ], [ 34.956322154378064, -17.31421226865082 ], [ 34.956345251698423, -17.314325525156761 ], [ 34.95636214657646, -17.314439787577303 ], [ 34.956372792693529, -17.314554742729765 ], [ 34.956377160857997, -17.314670075532256 ], [ 34.956375239085375, -17.314785469867143 ], [ 34.956367032631277, -17.314900609447584 ], [ 34.956352563977227, -17.315015178684423 ], [ 34.956331872769042, -17.31512886355118 ], [ 34.956305015708395, -17.315241352444758 ], [ 34.956272066397489, -17.31535233703957 ], [ 34.956233115137429, -17.315461513132622 ], [ 34.956188268680854, -17.31556858147739 ], [ 34.956137649939436, -17.315673248603972 ], [ 34.956081397647068, -17.315775227623565 ], [ 34.95601966597976, -17.315874239014846 ], [ 34.955952624133047, -17.315970011390132 ], [ 34.955880455858406, -17.316062282239301 ], [ 34.955803358959564, -17.31615079864936 ], [ 34.955721544750475, -17.31623531799772 ], [ 34.955635237476123, -17.316315608617266 ], [ 34.955544673697872, -17.316391450431393 ], [ 34.955450101645134, -17.316462635557304 ], [ 34.955351780534926, -17.316528968875815 ], [ 34.955249979861421, -17.316590268566287 ], [ 34.955144978657209, -17.316646366605035 ], [ 34.955037064728437, -17.316697109225839 ], [ 34.954926533865958, -17.3167423573416 ], [ 34.954813689034438, -17.316781986925569 ], [ 34.954698839541891, -17.316815889351282 ], [ 34.95460479566993, -17.316838550983693 ], [ 34.954026875506962, -17.314612148368443 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959294104555354, -17.315720468707916 ], [ 34.961301964672387, -17.313838203379714 ], [ 34.963115666188799, -17.315822640664031 ], [ 34.963041894062059, -17.315884425490665 ], [ 34.962926783983661, -17.315971076915993 ], [ 34.962807110273779, -17.316051822842091 ], [ 34.962683200953926, -17.316126441941666 ], [ 34.96255539565685, -17.316194729680749 ], [ 34.962424044695666, -17.316256498879472 ], [ 34.962289508103467, -17.316311580225161 ], [ 34.962152154646418, -17.316359822736526 ], [ 34.962012360812984, -17.316401094177511 ], [ 34.961870509781747, -17.316435281419889 ], [ 34.961726990371027, -17.316462290753368 ], [ 34.961582195973008, -17.316482048142475 ], [ 34.961436523475342, -17.316494499429613 ], [ 34.961290372173067, -17.316499610483458 ], [ 34.961144142673987, -17.316497367292616 ], [ 34.96099823580051, -17.316487776003999 ], [ 34.960853051490787, -17.316470862906066 ], [ 34.960708987702283, -17.316446674356676 ], [ 34.960566439320871, -17.31641527665608 ], [ 34.960425797078265, -17.316376755865221 ], [ 34.960287446480869, -17.316331217569729 ], [ 34.960151766752965, -17.316278786590583 ], [ 34.960019129797111, -17.316219606641869 ], [ 34.959889899174662, -17.316153839936874 ], [ 34.959764429109072, -17.316081666743379 ], [ 34.959643063514939, -17.316003284889536 ], [ 34.959526135055206, -17.315918909221505 ], [ 34.959413964229249, -17.31582877101453 ], [ 34.959306858494422, -17.315733117339001 ], [ 34.959294104555354, -17.315720468707916 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 32.0, "radius": null, "pivot": "DL1.3", "pivot_quadrant": "DL1.3" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.947298927757849, -17.321663500672134 ], [ 34.947451385514611, -17.321753599029073 ], [ 34.947340653363916, -17.32175579751058 ], [ 34.947298927757849, -17.321663500672134 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978720327296884, -17.343280601630497 ], [ 34.978354668011164, -17.346604682049772 ], [ 34.974946239091686, -17.346248144213522 ], [ 34.974966677958683, -17.346086172049372 ], [ 34.974997699207229, -17.345915643565576 ], [ 34.975037970821617, -17.345746907989223 ], [ 34.975087382395003, -17.345580427809782 ], [ 34.97514579846969, -17.345416659333534 ], [ 34.975213058908558, -17.345256051432944 ], [ 34.97528897933433, -17.345099044316385 ], [ 34.97537335163512, -17.344946068321619 ], [ 34.975465944535074, -17.344797542736355 ], [ 34.975566504228468, -17.344653874649165 ], [ 34.975674755075552, -17.34451545783368 ], [ 34.975790400358186, -17.344382671669511 ], [ 34.975913123093221, -17.344255880102434 ], [ 34.976042586901428, -17.344135430647047 ], [ 34.976178436929551, -17.344021653434318 ], [ 34.976320300822913, -17.343914860306906 ], [ 34.976467789746074, -17.343815343964536 ], [ 34.97662049944848, -17.343723377161893 ], [ 34.976778011372502, -17.343639211961133 ], [ 34.976939893800484, -17.343563079041154 ], [ 34.977105703038013, -17.343495187065461 ], [ 34.977274984629851, -17.343435722110325 ], [ 34.977447274605353, -17.343384847154883 ], [ 34.977622100750068, -17.343342701634597 ], [ 34.97779898389976, -17.34330940105912 ], [ 34.977977439253515, -17.343285036695779 ], [ 34.978156977702334, -17.343269675319497 ], [ 34.978337107169416, -17.343263359029866 ], [ 34.978517333958685, -17.343266105135793 ], [ 34.978697164107672, -17.343277906108096 ], [ 34.978720327296884, -17.343280601630497 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977997053286906, -17.349855632180109 ], [ 34.978354668011164, -17.346604682049772 ], [ 34.981789841437561, -17.346964017488332 ], [ 34.981778585407078, -17.347053244850819 ], [ 34.981747570472095, -17.34722377374904 ], [ 34.981707304975053, -17.34739251006086 ], [ 34.981657899255794, -17.347558991288736 ], [ 34.981599488707879, -17.347722761114898 ], [ 34.981532233407833, -17.347883370652081 ], [ 34.981456317676674, -17.348040379673982 ], [ 34.981371949574829, -17.348193357821991 ], [ 34.981279360332159, -17.348341885784777 ], [ 34.981178803714307, -17.348485556447741 ], [ 34.981070555327335, -17.348623976009009 ], [ 34.980954911862447, -17.348756765058912 ], [ 34.980832190282847, -17.348883559620049 ], [ 34.980702726955109, -17.349004012144992 ], [ 34.980566876727238, -17.349117792469176 ], [ 34.980425011956086, -17.349224588715831 ], [ 34.98027752148672, -17.349324108151073 ], [ 34.980124809586627, -17.349416077986319 ], [ 34.979967294837536, -17.349500246126194 ], [ 34.979805408988021, -17.349576381859599 ], [ 34.979639595770003, -17.349644276492203 ], [ 34.979470309682334, -17.349703743918624 ], [ 34.979298014744906, -17.34975462113265 ], [ 34.979123183226534, -17.349796768674064 ], [ 34.978946294350337, -17.349830071011084 ], [ 34.978767832979948, -17.349854436857079 ], [ 34.978588288290318, -17.349869799420887 ], [ 34.978408152426617, -17.34987611658989 ], [ 34.978227919154975, -17.349873371045543 ], [ 34.97804808250892, -17.349861570310917 ], [ 34.977997053286906, -17.349855632180109 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 42.0, "radius": 366, "pivot": "1.6", "pivot_quadrant": "1.6A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.978354668011164, -17.346604682049772 ], [ 34.978720327296884, -17.343280601630497 ], [ 34.978876104741104, -17.343298729600111 ], [ 34.979053665421596, -17.343328518536502 ], [ 34.979229359493594, -17.343367191269554 ], [ 34.979402705416973, -17.343414641803008 ], [ 34.979573228086664, -17.343470740082537 ], [ 34.979740460134565, -17.3435353323522 ], [ 34.979903943210367, -17.343608241575833 ], [ 34.980063229237601, -17.343689267922098 ], [ 34.980217881641593, -17.343778189312268 ], [ 34.980367476545865, -17.343874762028761 ], [ 34.98051160393382, -17.343978721383035 ], [ 34.980649868772417, -17.34408978244101 ], [ 34.980781892094825, -17.344207640803891 ], [ 34.980907312039015, -17.344331973442401 ], [ 34.981025784839666, -17.344462439582017 ], [ 34.981136985770199, -17.344598681636882 ], [ 34.981240610033026, -17.344740326189832 ], [ 34.9813363735949, -17.344886985015684 ], [ 34.981424013965515, -17.345038256145251 ], [ 34.981503290917125, -17.345193724966947 ], [ 34.981573987143072, -17.345352965363091 ], [ 34.981635908853576, -17.345515540877745 ], [ 34.981688886307055, -17.345681005912901 ], [ 34.981732774275621, -17.345848906949652 ], [ 34.981767452443343, -17.346018783791244 ], [ 34.981792825736257, -17.34619017082429 ], [ 34.981808824583204, -17.346362598294956 ], [ 34.981815405106829, -17.346535593596407 ], [ 34.981812549244125, -17.346708682564159 ], [ 34.981800264796163, -17.3468813907757 ], [ 34.981789841437561, -17.346964017488332 ], [ 34.978354668011164, -17.346604682049772 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981414279389675, -17.341507128753143 ], [ 34.981172574054533, -17.343691265597464 ], [ 34.981109475823907, -17.343683923580347 ], [ 34.980985765165556, -17.343663170309824 ], [ 34.980863355007244, -17.343636227310451 ], [ 34.980742580878861, -17.343603168432548 ], [ 34.980623773825592, -17.343564084290307 ], [ 34.980507259500335, -17.343519082013337 ], [ 34.980393357270984, -17.343468284952998 ], [ 34.980282379345013, -17.343411832344319 ], [ 34.980174629913549, -17.343349878924265 ], [ 34.980070404317615, -17.343282594507567 ], [ 34.979969988238452, -17.343210163521317 ], [ 34.979873656914428, -17.343132784499232 ], [ 34.979781674386686, -17.343050669537625 ], [ 34.9796942927752, -17.34296404371387 ], [ 34.979611751587868, -17.342873144469429 ], [ 34.979534277063955, -17.34277822095903 ], [ 34.979462081553976, -17.342679533367615 ], [ 34.979395362937744, -17.3425773521972 ], [ 34.979334304081959, -17.342471957525312 ], [ 34.979279072339089, -17.34236363823727 ], [ 34.979229819088637, -17.342252691234346 ], [ 34.979186679322453, -17.342139420619834 ], [ 34.979149771274642, -17.342024136865543 ], [ 34.979119196097734, -17.341907155960765 ], [ 34.979095037585431, -17.341788798546016 ], [ 34.979077361943133, -17.341669389034291 ], [ 34.979066217606537, -17.341549254721702 ], [ 34.97906163510909, -17.341428724890427 ], [ 34.979063626998311, -17.341308129906089 ], [ 34.979069772171925, -17.341221754105334 ], [ 34.981414279389675, -17.341507128753143 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981414279389675, -17.341507128753143 ], [ 34.981679444479695, -17.339111001077271 ], [ 34.981686301740211, -17.339111450993876 ], [ 34.981810970678175, -17.339125957608928 ], [ 34.981934678272594, -17.339146710678925 ], [ 34.982057085462138, -17.339173653321986 ], [ 34.982177856749416, -17.339206711691663 ], [ 34.98229666112038, -17.339245795179348 ], [ 34.982413172951517, -17.339290796662603 ], [ 34.982527072902251, -17.33934159279875 ], [ 34.982638048790086, -17.339398044362888 ], [ 34.982745796446203, -17.339459996629525 ], [ 34.98285002054908, -17.339527279796517 ], [ 34.982950435433793, -17.339599709450528 ], [ 34.983046765875045, -17.339677087072367 ], [ 34.983138747841409, -17.33975920058111 ], [ 34.983226129219041, -17.339845824915287 ], [ 34.983308670502595, -17.339936722649764 ], [ 34.983386145451767, -17.340031644646341 ], [ 34.983458341711369, -17.340130330736663 ], [ 34.983525061393408, -17.340232510435182 ], [ 34.98358612161946, -17.340337903680478 ], [ 34.983641355022087, -17.340446221602868 ], [ 34.983690610203553, -17.340557167316049 ], [ 34.983733752150904, -17.340670436730836 ], [ 34.983770662606105, -17.340785719388574 ], [ 34.98380124039025, -17.340902699312007 ], [ 34.983825401681088, -17.341021055871334 ], [ 34.983843080242778, -17.341140464662963 ], [ 34.983854227607615, -17.341260598398659 ], [ 34.983858813209004, -17.341381127802574 ], [ 34.983856824465377, -17.341501722513755 ], [ 34.983848266814846, -17.341622051991578 ], [ 34.983833163700361, -17.341741786421814 ], [ 34.983822529204822, -17.341800262183327 ], [ 34.981414279389675, -17.341507128753143 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 204.0, "radius": 255, "pivot": "1.5", "pivot_quadrant": "1.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.981172574054533, -17.343691265597464 ], [ 34.981414279389675, -17.341507128753143 ], [ 34.983822529204822, -17.341800262183327 ], [ 34.983811556505685, -17.341860597620538 ], [ 34.98378350444203, -17.341978159933678 ], [ 34.983749084385991, -17.342094151129654 ], [ 34.983708390668845, -17.342208253282561 ], [ 34.983661534818218, -17.342320153643641 ], [ 34.983608645252517, -17.342429545498533 ], [ 34.983549866928996, -17.342536129007982 ], [ 34.983485360946574, -17.342639612029675 ], [ 34.983415304104362, -17.34273971091913 ], [ 34.983339888417177, -17.342836151307104 ], [ 34.983259320589269, -17.342928668851723 ], [ 34.983173821447792, -17.343017009963088 ], [ 34.983083625337699, -17.343100932498373 ], [ 34.982988979479238, -17.343180206425632 ], [ 34.982890143290554, -17.343254614454327 ], [ 34.982787387676503, -17.343323952631003 ], [ 34.982680994286177, -17.343388030898371 ], [ 34.982571254740826, -17.343446673616306 ], [ 34.982458469834533, -17.343499720043344 ], [ 34.982342948709736, -17.343547024777287 ], [ 34.982225008009713, -17.343588458153864 ], [ 34.982104971010692, -17.343623906602136 ], [ 34.981983166735645, -17.343653272955859 ], [ 34.981859929052334, -17.343676476719857 ], [ 34.981735595758096, -17.343693454290744 ], [ 34.981610507653819, -17.343704159131189 ], [ 34.981485007609791, -17.343708561897607 ], [ 34.981359439625614, -17.343706650520566 ], [ 34.981234147887363, -17.3436984302379 ], [ 34.981172574054533, -17.343691265597464 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977605005473734, -17.338606017387828 ], [ 34.977665672603734, -17.33863431107558 ], [ 34.977763772866389, -17.338690719975755 ], [ 34.977876169269216, -17.338763283345308 ], [ 34.977984457548132, -17.338841396753352 ], [ 34.978088340898189, -17.338924846102827 ], [ 34.978187534586567, -17.339013402671572 ], [ 34.978281766732948, -17.339106823739105 ], [ 34.978370779054657, -17.339204853251911 ], [ 34.978454327574674, -17.339307222525107 ], [ 34.97853218329027, -17.339413650978859 ], [ 34.978604132800747, -17.339523846907355 ], [ 34.978669978892427, -17.33963750827823 ], [ 34.978729541079169, -17.339754323560388 ], [ 34.978782656097266, -17.339873972577784 ], [ 34.97882917835291, -17.339996127386925 ], [ 34.978868980321394, -17.34012045317569 ], [ 34.978901952896805, -17.340246609181008 ], [ 34.978928005691152, -17.340374249622688 ], [ 34.978947067282256, -17.340503024651259 ], [ 34.978959085409684, -17.340632581306743 ], [ 34.978964027118096, -17.340762564486102 ], [ 34.978961878847812, -17.340892617916531 ], [ 34.978952646472038, -17.341022385131897 ], [ 34.97893635528105, -17.34115151044988 ], [ 34.978926265695563, -17.341206981511462 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.976670537115623, -17.338320549892174 ], [ 34.976755638684374, -17.338330454697513 ], [ 34.976889048044576, -17.338352838997491 ], [ 34.977004841715654, -17.33837832923189 ], [ 34.977605005473734, -17.338606017387828 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976297118077937, -17.340867839790402 ], [ 34.975949718590073, -17.343237636498074 ], [ 34.97586557276648, -17.343223518187639 ], [ 34.975733562536121, -17.343194458466325 ], [ 34.975603316843497, -17.343158803210262 ], [ 34.975475192696571, -17.343116650150446 ], [ 34.975349541287549, -17.343068114828622 ], [ 34.97522670703011, -17.343013330280517 ], [ 34.975107026615298, -17.342952446671219 ], [ 34.974990828088544, -17.34288563088344 ], [ 34.974878429950408, -17.342813066060131 ], [ 34.974770140283518, -17.342734951102397 ], [ 34.974666255908012, -17.342651500124298 ], [ 34.974567061567939, -17.342562941865822 ], [ 34.974472829150777, -17.342469519065983 ], [ 34.974383816942158, -17.342371487797241 ], [ 34.974300268917865, -17.342269116763756 ], [ 34.974222414075207, -17.34216268656462 ], [ 34.974150465805295, -17.342052488924793 ], [ 34.974084621308229, -17.341938825895362 ], [ 34.974025061052657, -17.341822009025627 ], [ 34.973971948281175, -17.341702358509004 ], [ 34.973925428562943, -17.341580202305412 ], [ 34.973885629394871, -17.34145587524225 ], [ 34.973852659852184, -17.341329718096571 ], [ 34.973826610289663, -17.34120207666103 ], [ 34.973807552094073, -17.341073300796005 ], [ 34.973795537488641, -17.340943743470646 ], [ 34.973790599390107, -17.340813759795306 ], [ 34.973792751318612, -17.340683706048242 ], [ 34.973801987360879, -17.340553938699045 ], [ 34.973802974953465, -17.340546112708161 ], [ 34.976297118077937, -17.340867839790402 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 238.0, "radius": 275, "pivot": "1.4", "pivot_quadrant": "1.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976670537115623, -17.338320549892174 ], [ 34.976297118077937, -17.340867839790402 ], [ 34.973802974953465, -17.340546112708161 ], [ 34.973818282186457, -17.340424813431532 ], [ 34.973841591117456, -17.34029668416888 ], [ 34.973871850251086, -17.340169902103536 ], [ 34.973908976634981, -17.340044814734618 ], [ 34.973952868494727, -17.33992176491547 ], [ 34.974003405512995, -17.339801089913962 ], [ 34.974060449159396, -17.339683120488104 ], [ 34.974123843070416, -17.339568179979455 ], [ 34.974193413478005, -17.339456583426976 ], [ 34.97426896968603, -17.339348636703559 ], [ 34.974350304593074, -17.339244635677673 ], [ 34.974437195260094, -17.339144865402556 ], [ 34.974529403521622, -17.339049599334913 ], [ 34.974626676638515, -17.338959098585459 ], [ 34.974728747990838, -17.338873611203347 ], [ 34.974835337808571, -17.338793371496333 ], [ 34.974946153938468, -17.338718599388653 ], [ 34.975060892644805, -17.338649499818292 ], [ 34.975179239441857, -17.338586262175358 ], [ 34.975300869955831, -17.338529059782996 ], [ 34.975425450813887, -17.338478049422477 ], [ 34.975552640557751, -17.338433370903498 ], [ 34.975682090579618, -17.338395146681059 ], [ 34.975813446077481, -17.338363481519838 ], [ 34.975946347027502, -17.33833846220719 ], [ 34.976080429170672, -17.338320157315209 ], [ 34.976215325011133, -17.338308617012903 ], [ 34.976350664823187, -17.338303872928698 ], [ 34.976486077664653, -17.338305938063733 ], [ 34.976621192393402, -17.338314806756351 ], [ 34.976670537115623, -17.338320549892174 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.979495810456342, -17.334203961691134 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.976145471591806, -17.334907946244652 ], [ 34.976175428365991, -17.334865145367932 ], [ 34.976253802797373, -17.334764925673479 ], [ 34.976337530859709, -17.334668782842019 ], [ 34.976426383056278, -17.334576980388171 ], [ 34.976520115846917, -17.33448976992964 ], [ 34.976618472315508, -17.334407390497606 ], [ 34.976721182874279, -17.334330067881691 ], [ 34.976827966002574, -17.334258014011112 ], [ 34.976938529018604, -17.334191426373845 ], [ 34.977052568881554, -17.334130487475448 ], [ 34.977169773022176, -17.334075364338887 ], [ 34.977289820199417, -17.334026208046808 ], [ 34.977412381380873, -17.333983153327463 ], [ 34.977537120644556, -17.333946318185511 ], [ 34.977663696099462, -17.333915803578684 ], [ 34.977791760822647, -17.333891693141041 ], [ 34.977920963809922, -17.333874052953824 ], [ 34.978050950937828, -17.333862931364354 ], [ 34.978181365934098, -17.333858358853604 ], [ 34.978311851354057, -17.333860347952598 ], [ 34.978442049560201, -17.333868893208162 ], [ 34.978571603702264, -17.333883971197807 ], [ 34.978700158695197, -17.333905540594017 ], [ 34.978827362192298, -17.33393354227746 ], [ 34.978952865550774, -17.333967899499068 ], [ 34.97907632478725, -17.334008518090307 ], [ 34.979197401520416, -17.334055286721373 ], [ 34.979315763898441, -17.334108077206196 ], [ 34.979431087508353, -17.334166744853853 ], [ 34.979495810456342, -17.334203961691134 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.976973009965533, -17.338311269909727 ], [ 34.97820349148671, -17.336307953800048 ], [ 34.980211685376219, -17.337674066258426 ], [ 34.980160358782953, -17.337739701106912 ], [ 34.98007663167305, -17.33783584545019 ], [ 34.979987780081963, -17.337927649472633 ], [ 34.979894047543212, -17.338014861539353 ], [ 34.979795690970128, -17.338097242601521 ], [ 34.979692979951686, -17.338174566851677 ], [ 34.979586196013528, -17.338246622342712 ], [ 34.979475631846341, -17.33831321156887 ], [ 34.979361590503522, -17.338374152007198 ], [ 34.979244384570571, -17.338429276617834 ], [ 34.979124335308164, -17.338478434302029 ], [ 34.979001771771522, -17.338521490316253 ], [ 34.978877029908503, -17.33855832664165 ], [ 34.978750451638518, -17.338588842307534 ], [ 34.978622383915415, -17.338612953668228 ], [ 34.978493177776194, -17.338630594632406 ], [ 34.978363187378896, -17.338641716844212 ], [ 34.978232769031571, -17.338646289815852 ], [ 34.978102280215623, -17.338644301011275 ], [ 34.977972078605781, -17.338635755880404 ], [ 34.97784252108957, -17.338620677844375 ], [ 34.977713962789039, -17.338599108231218 ], [ 34.977586756087099, -17.338571106162615 ], [ 34.97746124966168, -17.338536748391885 ], [ 34.977445054809721, -17.33853142025189 ], [ 34.976973009965533, -17.338311269909727 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 22.0, "radius": 265, "pivot": "1.2", "pivot_quadrant": "1.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.97820349148671, -17.336307953800048 ], [ 34.979495810456342, -17.334203961691134 ], [ 34.979543056265214, -17.334231128865 ], [ 34.979651363278293, -17.334301052772663 ], [ 34.979755711692235, -17.334376324925834 ], [ 34.979855815500571, -17.334456739014655 ], [ 34.979951400329632, -17.334542074635905 ], [ 34.980042204190553, -17.334632097897025 ], [ 34.980127978197274, -17.334726562057128 ], [ 34.980208487248802, -17.334825208203203 ], [ 34.980283510673523, -17.334927765959726 ], [ 34.980352842834122, -17.33503395422969 ], [ 34.980416293691249, -17.335143481964927 ], [ 34.980473689324427, -17.335256048963895 ], [ 34.980524872408871, -17.335371346694291 ], [ 34.980569702646726, -17.335489059138776 ], [ 34.98060805715177, -17.335608863661058 ], [ 34.980639830786288, -17.33573043189012 ], [ 34.980664936449386, -17.335853430620244 ], [ 34.980683305315878, -17.335977522724271 ], [ 34.980694887025031, -17.336102368077537 ], [ 34.980699649818746, -17.336227624490192 ], [ 34.980697580628785, -17.336352948644983 ], [ 34.980688685112696, -17.336477997038344 ], [ 34.980672987638499, -17.336602426921839 ], [ 34.980650531218004, -17.336725897241585 ], [ 34.980621377389127, -17.336848069573168 ], [ 34.980585606047292, -17.336968609049123 ], [ 34.980543315226697, -17.337087185276864 ], [ 34.980494620831621, -17.337203473244294 ], [ 34.980439656318971, -17.337317154210655 ], [ 34.98037857233254, -17.337427916580229 ], [ 34.980311536290245, -17.337535456756427 ], [ 34.980238731925354, -17.337639479973969 ], [ 34.980211685376219, -17.337674066258426 ], [ 34.97820349148671, -17.336307953800048 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.974747055587912, -17.330561624074441 ], [ 34.975967002903133, -17.329006613978088 ], [ 34.97768378767087, -17.330124305102657 ], [ 34.977675645322599, -17.330135938962055 ], [ 34.977610877597876, -17.330218762285984 ], [ 34.977541685523548, -17.330298216410046 ], [ 34.97746825874755, -17.330374083551767 ], [ 34.97739079852591, -17.330446155760175 ], [ 34.97730951717098, -17.330514235485847 ], [ 34.977224637469618, -17.330578136122426 ], [ 34.977136392072467, -17.330637682518109 ], [ 34.977045022856281, -17.330692711455839 ], [ 34.976950780260992, -17.33074307210066 ], [ 34.976853922603134, -17.330788626413213 ], [ 34.976754715367839, -17.330829249528179 ], [ 34.9766534304811, -17.330864830096498 ], [ 34.976550345564355, -17.330895270590695 ], [ 34.976445743173485, -17.330920487572168 ], [ 34.976339910024251, -17.330940411919936 ], [ 34.976233136206396, -17.330954989020189 ], [ 34.976125714388374, -17.330964178915902 ], [ 34.97601793901508, -17.33096795641648 ], [ 34.975910105500709, -17.330966311166762 ], [ 34.975802509418969, -17.330959247675441 ], [ 34.975695445692772, -17.330946785302704 ], [ 34.975589207785838, -17.330928958207167 ], [ 34.975484086898128, -17.330905815252294 ], [ 34.975380371167688, -17.330877419872376 ], [ 34.975278344880749, -17.330843849898734 ], [ 34.975178287692358, -17.330805197346297 ], [ 34.975080473859883, -17.33076156816146 ], [ 34.97498517149112, -17.330713081931542 ], [ 34.974892641809419, -17.330659871557128 ], [ 34.974803138437572, -17.330602082887651 ], [ 34.974747055587912, -17.330561624074441 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.977225538507916, -17.327402417183986 ], [ 34.975967002903133, -17.329006613978088 ], [ 34.974274653035941, -17.327904830888109 ], [ 34.974317836853025, -17.327843131256433 ], [ 34.974382605457386, -17.327760308914549 ], [ 34.974451798181676, -17.327680855822567 ], [ 34.974525225370748, -17.327604989751688 ], [ 34.974602685764104, -17.327532918641111 ], [ 34.974683967047483, -17.327464840028238 ], [ 34.97476884643482, -17.327400940507246 ], [ 34.974857091278928, -17.327341395217715 ], [ 34.974948459709061, -17.327286367364568 ], [ 34.975042701293965, -17.327236007770892 ], [ 34.975139557728149, -17.327190454464535 ], [ 34.975238763539863, -17.327149832299764 ], [ 34.975340046818744, -17.32711425261525 ], [ 34.975443129960965, -17.327083812928787 ], [ 34.975547730430073, -17.327058596670124 ], [ 34.97565356153136, -17.32703867295232 ], [ 34.975760333197549, -17.327024096382285 ], [ 34.975867752783742, -17.32701490691122 ], [ 34.975975525869487, -17.327011129725086 ], [ 34.976083357065676, -17.327012775175607 ], [ 34.976190950823955, -17.327019838751866 ], [ 34.976298012246922, -17.327032301092764 ], [ 34.97640424789607, -17.327050128040007 ], [ 34.976509366596161, -17.327073270731798 ], [ 34.976613080233122, -17.327101665736684 ], [ 34.976715104543686, -17.327135235227491 ], [ 34.976815159894414, -17.327173887194547 ], [ 34.976912972048119, -17.327217515697914 ], [ 34.977008272915363, -17.327266001157675 ], [ 34.977100801289254, -17.327319210681736 ], [ 34.977190303561343, -17.32737699842998 ], [ 34.977225538507916, -17.327402417183986 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.1", "pivot_quadrant": "1.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.975967002903133, -17.329006613978088 ], [ 34.974747055587912, -17.330561624074441 ], [ 34.974716906702625, -17.330539874321609 ], [ 34.974634182963371, -17.330473416372392 ], [ 34.974555193962502, -17.330402891200858 ], [ 34.974480156205075, -17.330328492116003 ], [ 34.974409275365083, -17.330250423045062 ], [ 34.974342745721671, -17.330168897974517 ], [ 34.974280749626672, -17.330084140363468 ], [ 34.974223457004811, -17.329996382531196 ], [ 34.974171024887951, -17.329905865020287 ], [ 34.974123596984739, -17.329812835937251 ], [ 34.974081303286702, -17.329717550272466 ], [ 34.974044259712088, -17.329620269201229 ], [ 34.974012567788179, -17.329521259367823 ], [ 34.973986314373022, -17.329420792154632 ], [ 34.973965571417502, -17.329319142938278 ], [ 34.973950395768235, -17.329216590334781 ], [ 34.973940829011752, -17.329113415435877 ], [ 34.973936897360709, -17.329009901038535 ], [ 34.973938611582099, -17.328906330869806 ], [ 34.973945966967818, -17.328802988809159 ], [ 34.973958943347753, -17.328700158110344 ], [ 34.973977505145072, -17.328598120625017 ], [ 34.974001601473894, -17.328497156030238 ], [ 34.974031166278891, -17.328397541061847 ], [ 34.974066118516369, -17.328299548756014 ], [ 34.974106362376588, -17.328203447700862 ], [ 34.974151787546347, -17.328109501300297 ], [ 34.97420226951153, -17.328017967052048 ], [ 34.974257669898414, -17.327929095841995 ], [ 34.974274653035941, -17.327904830888109 ], [ 34.975967002903133, -17.329006613978088 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.971195967655134, -17.332888509205493 ], [ 34.970773107481506, -17.335663616039604 ], [ 34.967900765229288, -17.335206638144747 ], [ 34.967920610457007, -17.335097567226367 ], [ 34.967954614815163, -17.334955110851492 ], [ 34.967996335195423, -17.334814558954029 ], [ 34.968045657228011, -17.33467629677391 ], [ 34.968102445708503, -17.334540703274193 ], [ 34.968166544968589, -17.334408150102437 ], [ 34.968237779302939, -17.334279000572078 ], [ 34.968315953450919, -17.334153608666739 ], [ 34.968400853131925, -17.334032318069912 ], [ 34.968492245632852, -17.333915461223164 ], [ 34.968589880446025, -17.333803358414983 ], [ 34.968693489955889, -17.333696316902909 ], [ 34.968802790172646, -17.333594630071527 ], [ 34.968917481510559, -17.333498576628386 ], [ 34.969037249609258, -17.333408419840225 ], [ 34.969161766195299, -17.333324406811389 ], [ 34.969290689981875, -17.333246767806713 ], [ 34.969423667604325, -17.333175715620431 ], [ 34.969560334588486, -17.333111444993076 ], [ 34.969700316349666, -17.333054132077738 ], [ 34.969843229219229, -17.333003933957372 ], [ 34.969988681496098, -17.332960988214293 ], [ 34.970136274520222, -17.332925412553223 ], [ 34.970285603765085, -17.33289730447866 ], [ 34.970436259946382, -17.332876741027736 ], [ 34.970587830143572, -17.332863778559105 ], [ 34.970739898931548, -17.332858452598554 ], [ 34.970892049519023, -17.332860777741558 ], [ 34.97104386489081, -17.332870747613462 ], [ 34.971194928950496, -17.332888334886835 ], [ 34.971195967655134, -17.332888509205493 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970354223381719, -17.338412629071641 ], [ 34.970773107481506, -17.335663616039604 ], [ 34.973634084154476, -17.336118785717325 ], [ 34.973618904232666, -17.336202230245593 ], [ 34.973584904230833, -17.33634468714585 ], [ 34.973543188019221, -17.336485239791532 ], [ 34.97349386992196, -17.336623502934522 ], [ 34.973437085100322, -17.336759097601192 ], [ 34.973372989182529, -17.336891652131232 ], [ 34.973301757837334, -17.337020803196278 ], [ 34.973223586292583, -17.337146196795945 ], [ 34.973138688800368, -17.33726748922814 ], [ 34.973047298049813, -17.337384348031179 ], [ 34.972949664529423, -17.337496452895188 ], [ 34.97284605584057, -17.337603496540073 ], [ 34.972736755964092, -17.337705185557869 ], [ 34.972622064481968, -17.337801241217083 ], [ 34.972502295756165, -17.337891400226717 ], [ 34.972377778066971, -17.337975415458054 ], [ 34.9722488527133, -17.338053056622162 ], [ 34.972115873076987, -17.338124110901102 ], [ 34.97197920365425, -17.338188383531453 ], [ 34.97183921905652, -17.338245698338167 ], [ 34.97169630298346, -17.338295898217574 ], [ 34.971550847171287, -17.338338845568071 ], [ 34.971403250318779, -17.338374422667343 ], [ 34.971253916994385, -17.338402531995111 ], [ 34.971103256527137, -17.338423096500538 ], [ 34.970951681884493, -17.3384360598134 ], [ 34.970799608540283, -17.338441386398674 ], [ 34.970647453335715, -17.338439061654018 ], [ 34.970495633336562, -17.338429091949749 ], [ 34.970354223381719, -17.338412629071641 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.3", "pivot_quadrant": "1.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.970773107481506, -17.335663616039604 ], [ 34.971195967655134, -17.332888509205493 ], [ 34.971344827660843, -17.33291349135645 ], [ 34.971493150178375, -17.332946148071397 ], [ 34.971639489979275, -17.332986215524052 ], [ 34.971783445973415, -17.333033583895354 ], [ 34.971924623603627, -17.333088123355868 ], [ 34.972062635926825, -17.333149684421517 ], [ 34.972197104674571, -17.333218098363261 ], [ 34.972327661289661, -17.333293177669553 ], [ 34.97245394793616, -17.333374716560179 ], [ 34.972575618480157, -17.333462491550247 ], [ 34.972692339438325, -17.333556262062647 ], [ 34.972803790891966, -17.333655771087365 ], [ 34.972909667363737, -17.333760745885836 ], [ 34.973009678655011, -17.333870898738422 ], [ 34.973103550641191, -17.33398592773289 ], [ 34.973191026023137, -17.334105517591908 ], [ 34.973271865032345, -17.334229340537018 ], [ 34.9733458460883, -17.33435705718701 ], [ 34.973412766405815, -17.334488317488017 ], [ 34.973472442550914, -17.334622761672907 ], [ 34.973524710943792, -17.334760021247295 ], [ 34.973569428307272, -17.334899719999441 ], [ 34.973606472059643, -17.335041475031371 ], [ 34.973635740650828, -17.335184897808336 ], [ 34.973657153840904, -17.335329595223612 ], [ 34.973670652920205, -17.335475170675963 ], [ 34.973676200870415, -17.335621225156661 ], [ 34.973673782466292, -17.335767358343112 ], [ 34.973663404317563, -17.335913169696045 ], [ 34.97364509485098, -17.336058259557369 ], [ 34.973634084154476, -17.336118785717325 ], [ 34.970773107481506, -17.335663616039604 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96697037363257, -17.340380748223968 ], [ 34.968913119447087, -17.339561990788184 ], [ 34.968924732557923, -17.339588154703865 ], [ 34.968961776131572, -17.339685436701803 ], [ 34.96899346779216, -17.339784447337809 ], [ 34.969019720667752, -17.339884915233949 ], [ 34.969040462793117, -17.33998656501765 ], [ 34.969055637307129, -17.340089118076534 ], [ 34.969065202608647, -17.340192293321937 ], [ 34.969069132470679, -17.34029580795945 ], [ 34.969067416112331, -17.340399378263918 ], [ 34.969060058228507, -17.340502720357161 ], [ 34.969047078977077, -17.340605550986041 ], [ 34.969028513923831, -17.340707588298791 ], [ 34.969004413945001, -17.340808552617649 ], [ 34.968974845087928, -17.340908167205317 ], [ 34.968939888390231, -17.341006159023614 ], [ 34.968899639657678, -17.341102259481772 ], [ 34.968854209201659, -17.341196205172718 ], [ 34.968803721537007, -17.341287738595042 ], [ 34.968748315040735, -17.341376608858798 ], [ 34.968688141572834, -17.341462572373302 ], [ 34.968623366060072, -17.341545393514739 ], [ 34.968554166044022, -17.341624845272079 ], [ 34.96848073119444, -17.341700709869322 ], [ 34.968403262789458, -17.341772779362497 ], [ 34.968321973163881, -17.3418408562096 ], [ 34.968237085127249, -17.341904753812166 ], [ 34.968148831353027, -17.341964297026713 ], [ 34.968057453740961, -17.342019322644887 ], [ 34.967963202754007, -17.34206967984084 ], [ 34.967866336731689, -17.342115230584671 ], [ 34.967862993493888, -17.342116599326115 ], [ 34.96697037363257, -17.340380748223968 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96697037363257, -17.340380748223968 ], [ 34.965141978743468, -17.34115131321493 ], [ 34.965135870092325, -17.341139330722289 ], [ 34.965093577571821, -17.341044043052051 ], [ 34.965056535608213, -17.340946760170706 ], [ 34.965024845724365, -17.340847748727509 ], [ 34.964998594772723, -17.340747280109223 ], [ 34.964977854697416, -17.340645629696343 ], [ 34.964962682337145, -17.340543076108169 ], [ 34.964953119269445, -17.340439900439126 ], [ 34.96494919169681, -17.340336385488293 ], [ 34.964950910375102, -17.340232814984212 ], [ 34.964958270583949, -17.340129472807298 ], [ 34.964971252140032, -17.340026642211601 ], [ 34.964989819452306, -17.339924605048481 ], [ 34.965013921619786, -17.339823640994112 ], [ 34.965043492571134, -17.339724026782864 ], [ 34.965078451245816, -17.339626035448813 ], [ 34.965118701816422, -17.339529935577406 ], [ 34.965164133951369, -17.339435990569296 ], [ 34.965214623117454, -17.339344457918411 ], [ 34.965270030921225, -17.339255588506234 ], [ 34.965330205488343, -17.339169625914124 ], [ 34.965394981880017, -17.339086805755809 ], [ 34.965464182545041, -17.33900735503153 ], [ 34.965537617806547, -17.338931491505967 ], [ 34.965615086381874, -17.338859423111348 ], [ 34.965696375934364, -17.338791347377654 ], [ 34.965781263655309, -17.338727450891149 ], [ 34.965869516874641, -17.338667908783069 ], [ 34.965960893698714, -17.338612884249663 ], [ 34.966039653327748, -17.338570804330793 ], [ 34.96697037363257, -17.340380748223968 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 15.0, "radius": 219, "pivot": "1.7", "pivot_quadrant": "1.7A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.968913119447087, -17.339561990788184 ], [ 34.96697037363257, -17.340380748223968 ], [ 34.966039653327748, -17.338570804330793 ], [ 34.966055143673252, -17.338562528104891 ], [ 34.966152008469777, -17.338516978367149 ], [ 34.96625122259362, -17.338476359880929 ], [ 34.966352514111676, -17.338440783974821 ], [ 34.966455605397492, -17.338410348156252 ], [ 34.966560213892357, -17.33838513584438 ], [ 34.966666052879539, -17.338365216141444 ], [ 34.966772832270152, -17.338350643643359 ], [ 34.96688025939816, -17.338341458290188 ], [ 34.966988039822454, -17.338337685256583 ], [ 34.967095878133762, -17.338339334882878 ], [ 34.967203478764311, -17.338346402646742 ], [ 34.967310546797805, -17.338358869175604 ], [ 34.967416788777662, -17.33837670029968 ], [ 34.967521913511277, -17.338399847145745 ], [ 34.967625632868057, -17.338428246270951 ], [ 34.967727662569054, -17.338461819836844 ], [ 34.967827722966078, -17.338500475822592 ], [ 34.967925539808057, -17.338544108277233 ], [ 34.968020844992765, -17.338592597610052 ], [ 34.968113377301442, -17.338645810918319 ], [ 34.968202883114863, -17.338703602351565 ], [ 34.968289117108299, -17.338765813511245 ], [ 34.968371842924007, -17.338832273884954 ], [ 34.968450833818949, -17.338902801313676 ], [ 34.968525873286232, -17.33897720249103 ], [ 34.968596755648612, -17.339055273493063 ], [ 34.968663286622174, -17.339136800337148 ], [ 34.968725283848819, -17.339221559568486 ], [ 34.968782577396205, -17.339309318872438 ], [ 34.968835010223451, -17.339399837711309 ], [ 34.968882438611672, -17.339492867983591 ], [ 34.968913119447087, -17.339561990788184 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.958846576270247, -17.339420347508153 ], [ 34.961161225337996, -17.342695153682683 ], [ 34.957665162047512, -17.344762020273741 ], [ 34.957619750775827, -17.344692455184319 ], [ 34.957515131525668, -17.344511824153546 ], [ 34.95742049925115, -17.344326182128594 ], [ 34.957336113312707, -17.344136037957821 ], [ 34.957262204982982, -17.343941912828704 ], [ 34.957198976813203, -17.343744338839166 ], [ 34.957146602078303, -17.343543857538954 ], [ 34.957105224302296, -17.34334101844518 ], [ 34.957074956865263, -17.343136377535984 ], [ 34.957055882692877, -17.342930495726488 ], [ 34.957048054029585, -17.342723937331343 ], [ 34.957051492295761, -17.342517268517859 ], [ 34.957066188029401, -17.342311055754124 ], [ 34.957092100912497, -17.342105864256347 ], [ 34.957129159881944, -17.341902256439582 ], [ 34.957177263324716, -17.341700790376251 ], [ 34.95723627935687, -17.341502018266478 ], [ 34.957306046185302, -17.341306484924623 ], [ 34.957386372551667, -17.341114726286037 ], [ 34.957477038256947, -17.34092726793822 ], [ 34.957577794765285, -17.340744623680305 ], [ 34.957688365885573, -17.340567294114859 ], [ 34.957808448528688, -17.340395765275964 ], [ 34.957937713538506, -17.340230507297168 ], [ 34.958075806594252, -17.340071973122999 ], [ 34.958222349181902, -17.339920597267728 ], [ 34.958376939631663, -17.339776794624512 ], [ 34.95853915421911, -17.339640959328449 ], [ 34.958708548326541, -17.339513463676425 ], [ 34.958846576270247, -17.339420347508153 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.963463180156758, -17.345951999810669 ], [ 34.961161225337996, -17.342695153682683 ], [ 34.964664424622271, -17.340624068304397 ], [ 34.964697486842347, -17.340674713360091 ], [ 34.964802110127501, -17.34085534020641 ], [ 34.964896747286502, -17.341040978226815 ], [ 34.964981138905401, -17.341231118616804 ], [ 34.965055053649337, -17.34142524023035 ], [ 34.965118288896797, -17.34162281100804 ], [ 34.965170671295283, -17.3418232894353 ], [ 34.965212057236833, -17.342026126026514 ], [ 34.965242333251901, -17.342230764830955 ], [ 34.96526141632085, -17.342436644956557 ], [ 34.96526925410172, -17.342643202107119 ], [ 34.965265825074276, -17.342849870128966 ], [ 34.965251138599292, -17.34305608256269 ], [ 34.965225234893339, -17.343261274195687 ], [ 34.965188184918972, -17.343464882611432 ], [ 34.965140090190644, -17.343666349730935 ], [ 34.965081082496845, -17.343865123342518 ], [ 34.965011323539322, -17.344060658615334 ], [ 34.964931004490182, -17.344252419592877 ], [ 34.964840345468289, -17.344439880662051 ], [ 34.964739594936226, -17.344622527993895 ], [ 34.96462902901969, -17.344799860952165 ], [ 34.964508950750719, -17.344971393465599 ], [ 34.964379689237582, -17.345136655360388 ], [ 34.964241598762683, -17.345295193649122 ], [ 34.964095057811839, -17.345446573772414 ], [ 34.963940468036853, -17.34559038079038 ], [ 34.963778253154771, -17.345726220519964 ], [ 34.963608857786525, -17.345853720615708 ], [ 34.963463180156758, -17.345951999810669 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 60.0, "radius": 437, "pivot": "1.8", "pivot_quadrant": "1.8D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961161225337996, -17.342695153682683 ], [ 34.958846576270247, -17.339420347508153 ], [ 34.958884657661677, -17.339394657106936 ], [ 34.959066999530179, -17.339284865242441 ], [ 34.959255074158534, -17.339184388997051 ], [ 34.95944836606386, -17.339093503752036 ], [ 34.959646345466524, -17.339012458601051 ], [ 34.95984846974207, -17.33894147566772 ], [ 34.96005418490828, -17.338880749496898 ], [ 34.960262927143212, -17.338830446521602 ], [ 34.960474124330389, -17.338790704607014 ], [ 34.960687197626548, -17.338761632672661 ], [ 34.960901563047791, -17.338743310394069 ], [ 34.961116633069963, -17.338735787984415 ], [ 34.961331818238484, -17.338739086056979 ], [ 34.961546528783735, -17.338753195568739 ], [ 34.961760176237021, -17.338778077845117 ], [ 34.961972175043229, -17.3388136646861 ], [ 34.962181944165295, -17.338859858553089 ], [ 34.962388908676445, -17.338916532836219 ], [ 34.96259250133555, -17.338983532201397 ], [ 34.962792164141611, -17.33906067301595 ], [ 34.962987349862807, -17.339147743851825 ], [ 34.963177523536125, -17.33924450606515 ], [ 34.963362163933262, -17.33935069444999 ], [ 34.963540764989084, -17.339466017965307 ], [ 34.96371283718851, -17.339590160532456 ], [ 34.963877908907953, -17.339722781901354 ], [ 34.964035527707921, -17.339863518582955 ], [ 34.964185261572979, -17.340011984845287 ], [ 34.964326700095761, -17.340167773770666 ], [ 34.964459455601954, -17.340330458370634 ], [ 34.964583164212755, -17.340499592756277 ], [ 34.964664424622271, -17.340624068304397 ], [ 34.961161225337996, -17.342695153682683 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.962034302490196, -17.337088012040809 ], [ 34.964728870983024, -17.336051561916904 ], [ 34.966003469280459, -17.338512454706869 ], [ 34.965924344913347, -17.338549662135424 ], [ 34.965784357706042, -17.338606972920125 ], [ 34.965641439239995, -17.338657168665854 ], [ 34.965495981257945, -17.338700111782341 ], [ 34.965348382464626, -17.338735684558884 ], [ 34.965199047433821, -17.338763789487064 ], [ 34.965048385499237, -17.33878434952808 ], [ 34.96489680963235, -17.338797308323986 ], [ 34.964744735310369, -17.338802630352134 ], [ 34.964592579377161, -17.338800301022673 ], [ 34.964440758900508, -17.338790326718492 ], [ 34.964289690028806, -17.338772734777791 ], [ 34.96413978685019, -17.338747573419131 ], [ 34.963991460257319, -17.338714911609266 ], [ 34.963845116820963, -17.338674838874116 ], [ 34.963701157675445, -17.338627465053349 ], [ 34.96355997741891, -17.338572919999283 ], [ 34.963421963031685, -17.338511353220905 ], [ 34.963287492815319, -17.338442933474067 ], [ 34.96315693535562, -17.338367848298851 ], [ 34.963030648512166, -17.338286303505473 ], [ 34.96290897843744, -17.338198522610085 ], [ 34.962792258627822, -17.338104746222072 ], [ 34.962680809009477, -17.338005231384418 ], [ 34.962574935061454, -17.337900250869161 ], [ 34.962474926978267, -17.337790092429572 ], [ 34.962381058874492, -17.337675058011381 ], [ 34.962293588033532, -17.337555462925053 ], [ 34.962212754202319, -17.337431634981467 ], [ 34.962138778934303, -17.337303913593271 ], [ 34.962071864982285, -17.337172648844497 ], [ 34.962034302490196, -17.337088012040809 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.967428748672695, -17.335013069641263 ], [ 34.964728870983024, -17.336051561916904 ], [ 34.963415169170496, -17.333515171177073 ], [ 34.963505628599926, -17.333472634116486 ], [ 34.963645612969273, -17.33341532522212 ], [ 34.963788528230573, -17.33336513123426 ], [ 34.96393398267621, -17.33332218972393 ], [ 34.964081577640179, -17.333286618384236 ], [ 34.964230908590665, -17.333258514707836 ], [ 34.964381566238657, -17.333237955719817 ], [ 34.964533137659622, -17.333224997766614 ], [ 34.964685207425113, -17.333219676361633 ], [ 34.964837358741143, -17.333222006087869 ], [ 34.964989174590535, -17.333231980558111 ], [ 34.96514023887557, -17.333249572432333 ], [ 34.965290137558391, -17.333274733492722 ], [ 34.965438459795585, -17.333307394775765 ], [ 34.965584799064111, -17.333347466761317 ], [ 34.965728754275318, -17.333394839617938 ], [ 34.965869930874121, -17.333449383503872 ], [ 34.966007941920303, -17.333510948922914 ], [ 34.966142409148922, -17.333579367134121 ], [ 34.96627296400689, -17.333654450614219 ], [ 34.966399248663151, -17.333735993571572 ], [ 34.966520916989182, -17.333823772510151 ], [ 34.966637635507752, -17.333917546842027 ], [ 34.966749084306826, -17.334017059546696 ], [ 34.966854957916375, -17.334122037875517 ], [ 34.966954966145565, -17.334232194099176 ], [ 34.967048834878206, -17.334347226296227 ], [ 34.967136306824045, -17.334466819180523 ], [ 34.967217142224001, -17.334590644965317 ], [ 34.967291119507479, -17.334718364261622 ], [ 34.967358035899565, -17.334849627008314 ], [ 34.967417707977077, -17.334984073431553 ], [ 34.967428748672695, -17.335013069641263 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 30.0, "radius": 309, "pivot": "1.9", "pivot_quadrant": "1.9B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964728870983024, -17.336051561916904 ], [ 34.962034302490196, -17.337088012040809 ], [ 34.962012195742716, -17.337038200530916 ], [ 34.961959934753182, -17.336900937173795 ], [ 34.961915225244269, -17.33676123500965 ], [ 34.961878189747068, -17.336619476959022 ], [ 34.961848929757601, -17.33647605157676 ], [ 34.961827525458673, -17.336331351987006 ], [ 34.96181403550041, -17.336185774805603 ], [ 34.961808496839552, -17.336039719052945 ], [ 34.961810924638471, -17.335893585060266 ], [ 34.961821312223798, -17.33574777337228 ], [ 34.961839631104837, -17.335602683649384 ], [ 34.961865831052002, -17.335458713572155 ], [ 34.961899840234594, -17.335316257751341 ], [ 34.961941565417888, -17.335175706646258 ], [ 34.961990892218978, -17.335037445494642 ], [ 34.962047685420352, -17.33490185325676 ], [ 34.962111789340781, -17.334769301576685 ], [ 34.962183028262146, -17.334640153763782 ], [ 34.962261206911265, -17.334514763796925 ], [ 34.962346110995185, -17.334393475354325 ], [ 34.962437507788763, -17.334276620871645 ], [ 34.962535146772538, -17.334164520630836 ], [ 34.962638760319571, -17.334057481882457 ], [ 34.962748064428943, -17.333955798003494 ], [ 34.962862759504311, -17.333859747693428 ], [ 34.962982531175044, -17.333769594210374 ], [ 34.96310705115792, -17.333685584649643 ], [ 34.963235978156838, -17.33360794926655 ], [ 34.963368958798306, -17.333536900845434 ], [ 34.963415169170496, -17.333515171177073 ], [ 34.964728870983024, -17.336051561916904 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.958739701646998, -17.339232847473824 ], [ 34.957010326871092, -17.336809457524954 ], [ 34.959540353269119, -17.335238722501 ], [ 34.959589253839567, -17.335313636053893 ], [ 34.959668014263052, -17.335449625557878 ], [ 34.959739256571318, -17.335589387587159 ], [ 34.959802785482793, -17.335732539073017 ], [ 34.959858426855881, -17.335878687655981 ], [ 34.959906028166579, -17.336027432761135 ], [ 34.959945458926505, -17.336178366695954 ], [ 34.959976611040844, -17.336331075767689 ], [ 34.959999399104831, -17.336485141417217 ], [ 34.960013760638006, -17.336640141366214 ], [ 34.960019656255689, -17.336795650774501 ], [ 34.960017069777173, -17.336951243404492 ], [ 34.960006008270348, -17.337106492789449 ], [ 34.959986502032443, -17.337260973402362 ], [ 34.959958604507399, -17.337414261822307 ], [ 34.959922392139397, -17.337565937894968 ], [ 34.959877964163766, -17.337715585884322 ], [ 34.959825442335102, -17.337862795612132 ], [ 34.959764970593746, -17.338007163582269 ], [ 34.959696714671516, -17.338148294086736 ], [ 34.959620861637603, -17.338285800290265 ], [ 34.959537619385998, -17.33841930529077 ], [ 34.959447216065776, -17.338548443152437 ], [ 34.959349899456001, -17.33867285990879 ], [ 34.959245936286599, -17.338792214533026 ], [ 34.959135611507378, -17.338906179872861 ], [ 34.959019227507071, -17.339014443547278 ], [ 34.958897103284585, -17.339116708802869 ], [ 34.9587695735746, -17.339212695327376 ], [ 34.958739701646998, -17.339232847473824 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955242480798987, -17.334332157368866 ], [ 34.957010326871092, -17.336809457524954 ], [ 34.954343541002665, -17.33846509794364 ], [ 34.954260784434837, -17.338338313495246 ], [ 34.95418202629854, -17.338202321620905 ], [ 34.954110786758697, -17.338062557323308 ], [ 34.954047261066549, -17.337919403696002 ], [ 34.953991623328406, -17.337773253121934 ], [ 34.953944026028459, -17.33762450619783 ], [ 34.95390459961115, -17.337473570636146 ], [ 34.953873452123695, -17.337320860147432 ], [ 34.95385066892019, -17.337166793306359 ], [ 34.953836312427846, -17.337011792404329 ], [ 34.953830421976093, -17.336856282291919 ], [ 34.953833013689021, -17.336700689214442 ], [ 34.953844080441442, -17.336545439643551 ], [ 34.953863591878616, -17.336390959108272 ], [ 34.953891494499679, -17.336237671028709 ], [ 34.953927711804546, -17.336085995555422 ], [ 34.953972144503872, -17.335936348417885 ], [ 34.954024670791277, -17.335789139784975 ], [ 34.954085146677556, -17.33564477314086 ], [ 34.954153406385494, -17.335503644178985 ], [ 34.954229262804425, -17.335366139717731 ], [ 34.954312508003291, -17.33523263664009 ], [ 34.954402913800664, -17.335103500860804 ], [ 34.954500232390394, -17.334979086323543 ], [ 34.954604197020849, -17.334859734030776 ], [ 34.954714522726206, -17.334745771109269 ], [ 34.954830907107592, -17.334637509913541 ], [ 34.954953031161914, -17.334535247169818 ], [ 34.95508056015634, -17.334439263162871 ], [ 34.955213144545709, -17.334349820967844 ], [ 34.955242480798987, -17.334332157368866 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 341.0, "radius": 329, "pivot": "1.10", "pivot_quadrant": "1.10B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957010326871092, -17.336809457524954 ], [ 34.958739701646998, -17.339232847473824 ], [ 34.958636987930127, -17.339302140018049 ], [ 34.95849970976434, -17.339384797702966 ], [ 34.9583581153545, -17.339460441813092 ], [ 34.958212592810412, -17.339528865003448 ], [ 34.958063541010617, -17.33958987972149 ], [ 34.957911368508981, -17.339643318721347 ], [ 34.957756492414681, -17.339689035522227 ], [ 34.957599337248816, -17.339726904810092 ], [ 34.957440333780596, -17.339756822781162 ], [ 34.957279917846499, -17.339778707426536 ], [ 34.957118529155416, -17.339792498757056 ], [ 34.956956610083246, -17.339798158967696 ], [ 34.956794604460114, -17.339795672541321 ], [ 34.956632956353708, -17.339785046291222 ], [ 34.956472108851798, -17.339766309342444 ], [ 34.95631250284756, -17.339739513051995 ], [ 34.956154575830887, -17.339704730868029 ], [ 34.95599876068907, -17.339662058128571 ], [ 34.955845484519955, -17.339611611800109 ], [ 34.955695167461201, -17.33955353015708 ], [ 34.955548221538436, -17.339487972402619 ], [ 34.955405049535798, -17.339415118232349 ], [ 34.955266043891676, -17.339335167341641 ], [ 34.955131585622986, -17.339248338878221 ], [ 34.955002043280672, -17.339154870841433 ], [ 34.954877771939422, -17.339055019429797 ], [ 34.954759112224359, -17.338949058338667 ], [ 34.954646389377288, -17.338837278009954 ], [ 34.95453991236527, -17.338719984835976 ], [ 34.954439973033701, -17.338597500319473 ], [ 34.954346845306404, -17.338470160192326 ], [ 34.954343541002665, -17.33846509794364 ], [ 34.957010326871092, -17.336809457524954 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.959791281109077, -17.327010987988146 ], [ 34.960630932270384, -17.330690185640638 ], [ 34.956779145904193, -17.33137872104356 ], [ 34.956764856793804, -17.331308666394371 ], [ 34.956736047353225, -17.331113859021773 ], [ 34.95671789260097, -17.330917870461413 ], [ 34.956710442264828, -17.330721237910581 ], [ 34.956713716731777, -17.330524500330025 ], [ 34.956727706992346, -17.330328196966747 ], [ 34.956752374665776, -17.330132865875832 ], [ 34.956787652105561, -17.329939042445719 ], [ 34.956833442585214, -17.329747257930709 ], [ 34.956889620563857, -17.329558037994907 ], [ 34.956956032030497, -17.329371901271418 ], [ 34.957032494926693, -17.329189357940876 ], [ 34.957118799645741, -17.329010908333149 ], [ 34.957214709607541, -17.328837041556099 ], [ 34.957319961907359, -17.328668234155014 ], [ 34.957434268036607, -17.328504948806675 ], [ 34.957557314673871, -17.328347633051155 ], [ 34.957688764543875, -17.328196718065481 ], [ 34.957828257342058, -17.328052617481823 ], [ 34.957975410722298, -17.327915726254009 ], [ 34.958129821344905, -17.327786419575087 ], [ 34.958291065982159, -17.327665051849202 ], [ 34.958458702678442, -17.327551955720331 ], [ 34.958632271961456, -17.327447441160722 ], [ 34.958811298101537, -17.327351794621475 ], [ 34.958995290415487, -17.32726527824753 ], [ 34.959183744611337, -17.327188129159367 ], [ 34.959376144170342, -17.327120558803227 ], [ 34.959571961762535, -17.327062752371688 ], [ 34.959770660691824, -17.327014868296196 ], [ 34.959791281109077, -17.327010987988146 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.960630932270384, -17.330690185640638 ], [ 34.959791281109077, -17.327010987988146 ], [ 34.959971696366765, -17.326977037813023 ], [ 34.960174517792879, -17.326949364603571 ], [ 34.960378569082671, -17.326931924510365 ], [ 34.960583290978782, -17.32692476532921 ], [ 34.960788122386646, -17.326927906678304 ], [ 34.960992501911946, -17.326941339944465 ], [ 34.961195869399035, -17.326965028306834 ], [ 34.96139766746591, -17.326998906837758 ], [ 34.961597343031521, -17.327042882680757 ], [ 34.96179434883144, -17.327096835305003 ], [ 34.96198814491747, -17.327160616835705 ], [ 34.962178200137267, -17.327234052459289 ], [ 34.962363993589896, -17.327316940902499 ], [ 34.962545016053291, -17.327409054984003 ], [ 34.962720771379686, -17.327510142236925 ], [ 34.962890777855286, -17.327619925600736 ], [ 34.963054569520445, -17.327738104180536 ], [ 34.963211697446603, -17.327864354071615 ], [ 34.963361730966632, -17.327998329247073 ], [ 34.96350425885521, -17.328139662506167 ], [ 34.963638890455776, -17.328287966480499 ], [ 34.963765256751422, -17.328442834695693 ], [ 34.963883011376232, -17.328603842685226 ], [ 34.963991831564719, -17.328770549153813 ], [ 34.96409141903667, -17.328942497186652 ], [ 34.964181500814739, -17.329119215501724 ], [ 34.964261829972877, -17.329300219741285 ], [ 34.964332186313328, -17.329485013799381 ], [ 34.964392376970423, -17.329673091181412 ], [ 34.964442236939426, -17.329863936392307 ], [ 34.964470767983819, -17.3300037865056 ], [ 34.960630932270384, -17.330690185640638 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 544.0, "radius": 416, "pivot": "1.11", "pivot_quadrant": "1.11C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961187884958441, -17.334400587778653 ], [ 34.960619385935466, -17.330692249633707 ], [ 34.964470767983819, -17.3300037865056 ], [ 34.964481629529139, -17.330057026349291 ], [ 34.964510446736824, -17.330251831815545 ], [ 34.964528609544658, -17.330447818850658 ], [ 34.964536068136539, -17.330644450274068 ], [ 34.964532802035059, -17.330841187137342 ], [ 34.964518820158055, -17.331037490201368 ], [ 34.964494160794402, -17.331232821414325 ], [ 34.964458891499589, -17.331426645386436 ], [ 34.964413108910819, -17.331618430857471 ], [ 34.964356938482574, -17.331807652152843 ], [ 34.964290534143089, -17.331993790624551 ], [ 34.964214077872739, -17.332176336072834 ], [ 34.964127779205612, -17.332354788144567 ], [ 34.964031874655497, -17.332528657704952 ], [ 34.963926627067856, -17.332697468178146 ], [ 34.963812324899642, -17.332860756853766 ], [ 34.963689281428891, -17.333018076155238 ], [ 34.963557833896161, -17.33316899486671 ], [ 34.963418342580404, -17.333313099315198 ], [ 34.963271189811508, -17.333449994504512 ], [ 34.96311677892249, -17.333579305198217 ], [ 34.962955533143941, -17.333700676948169 ], [ 34.962787894444006, -17.333813777066307 ], [ 34.962614322316931, -17.333918295536666 ], [ 34.962435292523566, -17.334013945865316 ], [ 34.962251295787105, -17.334100465865792 ], [ 34.962062836447977, -17.334177618377865 ], [ 34.961870431081294, -17.334245191917802 ], [ 34.961674607080617, -17.334303001258153 ], [ 34.961475901212289, -17.334350887935564 ], [ 34.961274858143774, -17.334388720685283 ], [ 34.961187884958441, -17.334400587778653 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96199524794266, -17.324405539234302 ], [ 34.964747977596112, -17.324162087220788 ], [ 34.964754107256297, -17.324228233923105 ], [ 34.964759198639079, -17.324362472761511 ], [ 34.964756968599289, -17.324496783565166 ], [ 34.964747423233277, -17.324630798198889 ], [ 34.964730588688205, -17.324764149338428 ], [ 34.964706511090462, -17.324896471477366 ], [ 34.964675256419525, -17.325027401928896 ], [ 34.964636910327144, -17.325156581819918 ], [ 34.96459157790283, -17.325283657074714 ], [ 34.964539383385976, -17.325408279385538 ], [ 34.964480469825446, -17.325530107167204 ], [ 34.964414998687616, -17.325648806493543 ], [ 34.964343149413992, -17.32576405201263 ], [ 34.964265118929369, -17.325875527838612 ], [ 34.964181121102321, -17.325982928417645 ], [ 34.964091386158998, -17.326085959365418 ], [ 34.963996160052147, -17.326184338274128 ], [ 34.963895703787074, -17.326277795486632 ], [ 34.963790292706257, -17.326366074835622 ], [ 34.96368021573462, -17.326448934345862 ], [ 34.963565774587678, -17.326526146897482 ], [ 34.9634472829445, -17.32659750084861 ], [ 34.963325065587895, -17.326662800615537 ], [ 34.963199457514115, -17.326721867208889 ], [ 34.963070803014624, -17.32677453872428 ], [ 34.962939454732314, -17.326820670786223 ], [ 34.962917097922038, -17.326827271055144 ], [ 34.96199524794266, -17.324405539234302 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.96199524794266, -17.324405539234302 ], [ 34.959429692942393, -17.324632437480492 ], [ 34.959421977630143, -17.324549153958536 ], [ 34.959416890093451, -17.32441491459441 ], [ 34.959419124030532, -17.324280603456128 ], [ 34.959428673302277, -17.324146588682531 ], [ 34.959445511718769, -17.324013237599395 ], [ 34.959469593111187, -17.323880915712522 ], [ 34.9595008514585, -17.323749985705984 ], [ 34.959539201068687, -17.323620806447984 ], [ 34.959584536813644, -17.323493732007297 ], [ 34.959636734417636, -17.323369110682769 ], [ 34.959695650797968, -17.323247284048762 ], [ 34.95976112445738, -17.323128586018875 ], [ 34.95983297592673, -17.323013341930839 ], [ 34.959911008257158, -17.322901867654821 ], [ 34.959995007559861, -17.322794468727679 ], [ 34.960084743592546, -17.322691439515644 ], [ 34.96017997039052, -17.322593062407474 ], [ 34.960280426940905, -17.322499607040605 ], [ 34.960385837898102, -17.322411329562119 ], [ 34.960495914338523, -17.322328471926756 ], [ 34.960610354552486, -17.322251261233856 ], [ 34.960728844871134, -17.322179909104896 ], [ 34.960851060526181, -17.322114611103654 ], [ 34.960976666540034, -17.322055546200151 ], [ 34.96108398180769, -17.322011611539249 ], [ 34.96199524794266, -17.324405539234302 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 254.0, "radius": 284, "pivot": "1.14", "pivot_quadrant": "1.14B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.964747977596112, -17.324162087220788 ], [ 34.96199524794266, -17.324405539234302 ], [ 34.96108398180769, -17.322011611539249 ], [ 34.961105318643774, -17.322002876280248 ], [ 34.96123666422077, -17.321956745701957 ], [ 34.961370343273025, -17.321917280899935 ], [ 34.961505989407819, -17.321884590038856 ], [ 34.961643230841815, -17.321858762717138 ], [ 34.961781691419915, -17.321839869721348 ], [ 34.961920991646146, -17.321827962832202 ], [ 34.962060749723705, -17.32182307468274 ], [ 34.962200582601191, -17.321825218668891 ], [ 34.96234010702242, -17.321834388912762 ], [ 34.962478940576688, -17.321850560278769 ], [ 34.962616702746779, -17.321873688442555 ], [ 34.962753015951741, -17.321903710012467 ], [ 34.962887506581652, -17.321940542703295 ], [ 34.963019806021485, -17.321984085561798 ], [ 34.963149551661324, -17.32203421924336 ], [ 34.963276387890048, -17.322090806339091 ], [ 34.963399967069982, -17.322153691752426 ], [ 34.963519950489498, -17.322222703124122 ], [ 34.963636009291434, -17.32229765130468 ], [ 34.963747825374263, -17.322378330872727 ], [ 34.963855092263934, -17.322464520697949 ], [ 34.963957515953815, -17.322555984547151 ], [ 34.964054815710554, -17.322652471731679 ], [ 34.964146724843467, -17.322753717794438 ], [ 34.96423299143548, -17.322859445234723 ], [ 34.964313379033676, -17.322969364268623 ], [ 34.96438766729743, -17.323083173623363 ], [ 34.964455652602332, -17.323200561362906 ], [ 34.964517148598397, -17.323321205742843 ], [ 34.964571986720919, -17.323444776092288 ], [ 34.964620016652553, -17.323570933720035 ], [ 34.964661106735534, -17.323699332842892 ], [ 34.964695144332502, -17.323829621533367 ], [ 34.96472203613552, -17.323961442684205 ], [ 34.964741708421862, -17.324094434987114 ], [ 34.964747977596112, -17.324162087220788 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954371207002062, -17.320983642849392 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.950800585931511, -17.325458685865403 ], [ 34.950798085682457, -17.325441774613314 ], [ 34.95077858621412, -17.32523117967385 ], [ 34.950770588566108, -17.325019893135909 ], [ 34.950774114620295, -17.324808494126536 ], [ 34.9507891546723, -17.324597562079067 ], [ 34.950815667458698, -17.324387675145019 ], [ 34.950853580270376, -17.324179408609258 ], [ 34.950902789152352, -17.323973333313319 ], [ 34.950963159189094, -17.323770014090702 ], [ 34.951034524874757, -17.323570008218802 ], [ 34.951116690567204, -17.323373863891501 ], [ 34.951209431024573, -17.323182118716737 ], [ 34.95131249202305, -17.322995298242994 ], [ 34.951425591053983, -17.322813914518999 ], [ 34.951548418098469, -17.322638464690389 ], [ 34.951680636477363, -17.322469429637149 ], [ 34.951821883774279, -17.322307272655788 ], [ 34.951971772829168, -17.322152438189679 ], [ 34.952129892799526, -17.322005350611001 ], [ 34.952295810286643, -17.321866413057819 ], [ 34.952469070523492, -17.321736006329285 ], [ 34.952649198621224, -17.321614487842119 ], [ 34.952835700870786, -17.321502190651106 ], [ 34.95302806609596, -17.321399422536551 ], [ 34.953225767054377, -17.32130646516076 ], [ 34.953428261882415, -17.321223573296251 ], [ 34.953634995580217, -17.321150974127637 ], [ 34.953845401532618, -17.321088866629136 ], [ 34.95405890306192, -17.321037421019309 ], [ 34.954274915008149, -17.320996778294667 ], [ 34.954371207002062, -17.320983642849392 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955577723835631, -17.328974101137693 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.959167806457437, -17.324690368182022 ], [ 34.959171141296942, -17.324726367099057 ], [ 34.959179148473709, -17.324937652338512 ], [ 34.959175632074597, -17.325149050522835 ], [ 34.959160601698166, -17.325359982227685 ], [ 34.95913409850187, -17.32556986930533 ], [ 34.959096195089728, -17.325778136469321 ], [ 34.95904699531377, -17.325984212871251 ], [ 34.958986633989731, -17.3261875336655 ], [ 34.958915276527989, -17.326387541557416 ], [ 34.958833118480612, -17.326583688331024 ], [ 34.958740385005683, -17.326775436351578 ], [ 34.958637330250511, -17.326962260039437 ], [ 34.958524236655357, -17.327143647310606 ], [ 34.958401414179555, -17.327319100980638 ], [ 34.958269199452211, -17.327488140127418 ], [ 34.958127954849679, -17.327650301409609 ], [ 34.957978067502509, -17.327805140336711 ], [ 34.957819948234501, -17.327952232487675 ], [ 34.957654030436665, -17.328091174674338 ], [ 34.957480768879407, -17.328221586046784 ], [ 34.957300638466052, -17.328343109137428 ], [ 34.957114132931054, -17.328455410841006 ], [ 34.956921763486584, -17.328558183327818 ], [ 34.956724057421276, -17.328651144887623 ], [ 34.956521556654678, -17.328734040702091 ], [ 34.956314816251719, -17.328806643543295 ], [ 34.95610440290104, -17.328868754396808 ], [ 34.955890893361392, -17.328920203007311 ], [ 34.955674872880472, -17.3289608483454 ], [ 34.955577723835631, -17.328974101137693 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 629.0, "radius": 447, "pivot": "1.13", "pivot_quadrant": "1.13D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954694649227697, -17.320949807844581 ], [ 34.954492845332638, -17.320967049843368 ], [ 34.954371207002062, -17.320983642849392 ], [ 34.954988844373986, -17.325074100205931 ], [ 34.959167806457437, -17.324690368182022 ], [ 34.959151632530556, -17.324515773917259 ], [ 34.9591206756849, -17.324306450007203 ], [ 34.959078355647378, -17.324098969102089 ], [ 34.959024788449319, -17.323893899881941 ], [ 34.958960120947573, -17.323691804414914 ], [ 34.958884530421642, -17.323493236616837 ], [ 34.958798224087445, -17.323298740733154 ], [ 34.958701438529012, -17.323108849847333 ], [ 34.958594439049804, -17.322924084419899 ], [ 34.958477518945266, -17.322744950862091 ], [ 34.958350998698776, -17.322571940148009 ], [ 34.958215225103011, -17.322405526469097 ], [ 34.958070570309403, -17.32224616593458 ], [ 34.957917430807903, -17.322094295321598 ], [ 34.957756226340365, -17.321950330878167 ], [ 34.957587398750036, -17.321814667182498 ], [ 34.957411410770504, -17.32168767606171 ], [ 34.957228744757572, -17.321569705572823 ], [ 34.957039901367345, -17.321461079048959 ], [ 34.956845398184079, -17.321362094213331 ], [ 34.956645768301847, -17.321273022363293 ], [ 34.956441558863588, -17.321194107626912 ], [ 34.956233329561812, -17.321125566293954 ], [ 34.956021651104756, -17.321067586223158 ], [ 34.955807103652589, -17.321020326327432 ], [ 34.955590275227564, -17.320983916138314 ], [ 34.955489834358993, -17.320972213087796 ], [ 34.955350371836573, -17.320966445369216 ], [ 34.954694649227697, -17.320949807844581 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.953639390624843, -17.331963065750791 ], [ 34.952025040374643, -17.329583299853645 ], [ 34.952098160034545, -17.329533973616417 ], [ 34.952228758810662, -17.32945534029977 ], [ 34.952363463216741, -17.329383379493198 ], [ 34.952501904045853, -17.329318288427501 ], [ 34.952643701851599, -17.329260245504308 ], [ 34.952788467988015, -17.32920940980728 ], [ 34.952935805674699, -17.329165920666156 ], [ 34.953085311084202, -17.329129897274889 ], [ 34.953236574448724, -17.329101438365029 ], [ 34.953389181183084, -17.329080621935237 ], [ 34.953542713020894, -17.329067505037447 ], [ 34.953696749160791, -17.329062123620638 ], [ 34.953850867419632, -17.329064492432295 ], [ 34.954004645389389, -17.329074604977993 ], [ 34.954157661594884, -17.32909243353928 ], [ 34.954309496648627, -17.32911792924957 ], [ 34.954459734400203, -17.329151022228181 ], [ 34.954607963076747, -17.329191621771777 ], [ 34.954753776411302, -17.329239616603008 ], [ 34.954896774756236, -17.329294875175442 ], [ 34.955036566178386, -17.329357246034085 ], [ 34.955172767533284, -17.329426558230505 ], [ 34.955305005515051, -17.329502621791256 ], [ 34.955432917679516, -17.329585228238543 ], [ 34.955556153437534, -17.329674151161573 ], [ 34.955674375015825, -17.329769146837066 ], [ 34.955787258382678, -17.329869954897095 ], [ 34.955894494136068, -17.329976299042801 ], [ 34.955995788351686, -17.330087887801479 ], [ 34.956090863388482, -17.330204415325397 ], [ 34.956179458649743, -17.330325562230108 ], [ 34.956244881516085, -17.330425794331145 ], [ 34.953639390624843, -17.331963065750791 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.953639390624843, -17.331963065750791 ], [ 34.955236330182871, -17.33431716598372 ], [ 34.955224718727678, -17.334324157333015 ], [ 34.955090012251418, -17.334396120283976 ], [ 34.954951568916741, -17.334461213401692 ], [ 34.954809768197514, -17.334519258262056 ], [ 34.954664998771598, -17.334570095760149 ], [ 34.954517657455462, -17.334613586546542 ], [ 34.954368148116309, -17.33464961140923 ], [ 34.954216880565006, -17.334678071600539 ], [ 34.954064269432592, -17.334698889107798 ], [ 34.953910733033638, -17.334712006867239 ], [ 34.953756692219486, -17.334717388920446 ], [ 34.9536025692245, -17.334715020512974 ], [ 34.953448786508559, -17.334704908134796 ], [ 34.953295765598902, -17.334687079502569 ], [ 34.953143925934526, -17.334661583483619 ], [ 34.952993683716358, -17.334628489962032 ], [ 34.952845450766205, -17.334587889647075 ], [ 34.952699633397849, -17.334539893824552 ], [ 34.952556631303125, -17.334484634051776 ], [ 34.952416836456244, -17.334422261796878 ], [ 34.952280632039226, -17.334352948023589 ], [ 34.952148391391503, -17.334276882722619 ], [ 34.952020476986448, -17.334194274390857 ], [ 34.951897239437749, -17.334105349459705 ], [ 34.95177901653831, -17.33401035167449 ], [ 34.951666132334324, -17.333909541426202 ], [ 34.951558896236968, -17.333803195037721 ], [ 34.951457602174337, -17.333691604006312 ], [ 34.951362527785797, -17.333575074204578 ], [ 34.951273933660957, -17.333453925041969 ], [ 34.951229068073914, -17.333385185468085 ], [ 34.953639390624843, -17.331963065750791 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 307.0, "radius": 313, "pivot": "1.12", "pivot_quadrant": "1.12C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.952025040374643, -17.329583299853645 ], [ 34.953639390624843, -17.331963065750791 ], [ 34.951229068073914, -17.333385185468085 ], [ 34.951192062625495, -17.333328488589178 ], [ 34.951117139075599, -17.333199108667912 ], [ 34.951049368362995, -17.333066139908343 ], [ 34.9509889362322, -17.332929946777021 ], [ 34.950936008311515, -17.33279090257782 ], [ 34.950890729659179, -17.332649388428607 ], [ 34.950853224365929, -17.332505792216605 ], [ 34.950823595214999, -17.332360507535061 ], [ 34.95080192340064, -17.332213932604489 ], [ 34.950788268305715, -17.332066469180983 ], [ 34.950782667339162, -17.331918521455069 ], [ 34.950785135833648, -17.331770494943793 ], [ 34.950795667003739, -17.331622795379207 ], [ 34.950814231964728, -17.33147582759624 ], [ 34.950840779812026, -17.331329994423033 ], [ 34.950875237760897, -17.331185695576949 ], [ 34.950917511346177, -17.331043326568849 ], [ 34.950967484681314, -17.330903277619115 ], [ 34.951025020776335, -17.330765932588115 ], [ 34.951089961913382, -17.330631667924091 ], [ 34.951162130079283, -17.330500851631427 ], [ 34.951241327453488, -17.330373842262006 ], [ 34.951327336950605, -17.33025098793253 ], [ 34.951419922815354, -17.330132625370453 ], [ 34.951518831268977, -17.330019078991043 ], [ 34.951623791204831, -17.329910660008423 ], [ 34.95173451493163, -17.329807665582468 ], [ 34.951850698961884, -17.329710378004542 ], [ 34.951972024843911, -17.32961906392379 ], [ 34.952025040374643, -17.329583299853645 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.951827023263888, -17.31509680237874 ], [ 34.954026875506962, -17.314612148368443 ], [ 34.95460479566993, -17.316838550983693 ], [ 34.954582300191881, -17.316843971690474 ], [ 34.954464390420419, -17.316866156967695 ], [ 34.954345433420492, -17.316882384371478 ], [ 34.954225755255891, -17.316892609420933 ], [ 34.954105683967548, -17.316896804087772 ], [ 34.953985548674133, -17.316894956873099 ], [ 34.953865678669999, -17.316887072839005 ], [ 34.953746402522292, -17.316873173594651 ], [ 34.953628047170405, -17.316853297237095 ], [ 34.953510937029606, -17.316827498246788 ], [ 34.953395393101793, -17.316795847338348 ], [ 34.953281732095512, -17.316758431266628 ], [ 34.953170265557723, -17.316715352588957 ], [ 34.953061299019829, -17.316666729384 ], [ 34.95295513116006, -17.316612694928025 ], [ 34.952852052984774, -17.316553397329692 ], [ 34.95275234703076, -17.316488999123926 ], [ 34.952656286590667, -17.316419676826428 ], [ 34.952564134963964, -17.316345620449805 ], [ 34.95247614473513, -17.316267032982701 ], [ 34.952392557081382, -17.316184129833367 ], [ 34.952313601111499, -17.316097138239147 ], [ 34.952239493237947, -17.31600629664365 ], [ 34.952170436583643, -17.315911854043023 ], [ 34.952106620425212, -17.315814069303528 ], [ 34.952048219674296, -17.31571321045185 ], [ 34.95199539439816, -17.315609553940433 ], [ 34.951948289380944, -17.315503383889688 ], [ 34.951907033726947, -17.315394991309187 ], [ 34.951871740506874, -17.315284673299935 ], [ 34.951842506447925, -17.315172732240043 ], [ 34.951827023263888, -17.31509680237874 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.95629602563065, -17.314112227198336 ], [ 34.954026875506962, -17.314612148368443 ], [ 34.953494750340077, -17.312562168216999 ], [ 34.953582389133082, -17.312541050248115 ], [ 34.953700296363273, -17.312518865749148 ], [ 34.953819250693684, -17.312502638999813 ], [ 34.953938926089734, -17.312492414473798 ], [ 34.954058994540823, -17.312488220193675 ], [ 34.95417912695936, -17.312490067654078 ], [ 34.954298994082514, -17.312497951790249 ], [ 34.954418267374685, -17.312511850991893 ], [ 34.954536619927801, -17.312531727162444 ], [ 34.954653727357204, -17.312557525823461 ], [ 34.954769268690725, -17.312589176263966 ], [ 34.954882927248256, -17.312626591734215 ], [ 34.954994391509658, -17.312669669683476 ], [ 34.955103355968461, -17.312718292041072 ], [ 34.955209521969209, -17.312772325539996 ], [ 34.955312598525929, -17.312831622082093 ], [ 34.955412303119552, -17.312896019143999 ], [ 34.955508362472351, -17.312965340222579 ], [ 34.955600513296758, -17.313039395318516 ], [ 34.955688503017065, -17.313117981457257 ], [ 34.955772090461657, -17.313200883245095 ], [ 34.955851046524032, -17.313287873459569 ], [ 34.955925154790734, -17.313378713672218 ], [ 34.955994212134506, -17.313473154902031 ], [ 34.956058029271169, -17.313570938297769 ], [ 34.956116431278367, -17.313671795847476 ], [ 34.956169258075107, -17.313775451112978 ], [ 34.956216364860559, -17.31388161998748 ], [ 34.956257622511032, -17.313990011474338 ], [ 34.956292917933979, -17.3141003284845 ], [ 34.95629602563065, -17.314112227198336 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 187.0, "radius": 244, "pivot": "1.17", "pivot_quadrant": "1.17C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954026875506962, -17.314612148368443 ], [ 34.951827023263888, -17.31509680237874 ], [ 34.951819411668815, -17.315059474955834 ], [ 34.951802519460308, -17.314945211880861 ], [ 34.951791876111791, -17.314830256204942 ], [ 34.951787510784577, -17.314714923015753 ], [ 34.951789435432069, -17.314599528435117 ], [ 34.951797644767126, -17.314484388752604 ], [ 34.951812116276713, -17.314369819558468 ], [ 34.95183281028369, -17.314256134878732 ], [ 34.951859670055732, -17.314143646314449 ], [ 34.951892621960923, -17.314032662187568 ], [ 34.95193157566974, -17.31392348669598 ], [ 34.951976424402709, -17.313816419079632 ], [ 34.952027045223218, -17.313711752800415 ], [ 34.952083299374593, -17.313609774737873 ], [ 34.952145032660468, -17.313510764402817 ], [ 34.952212075867564, -17.313414993171374 ], [ 34.952284245229521, -17.313322723541155 ], [ 34.952361342930651, -17.31323420841176 ], [ 34.952443157648254, -17.313149690391761 ], [ 34.952529465131775, -17.313069401133724 ], [ 34.95262002881752, -17.312993560699343 ], [ 34.952714600477137, -17.312922376956276 ], [ 34.952812920897877, -17.312856045008573 ], [ 34.952914720593142, -17.312794746661851 ], [ 34.95301972054105, -17.312738649925091 ], [ 34.953127632949226, -17.31268790855022 ], [ 34.953238162043483, -17.312642661610678 ], [ 34.953351004878527, -17.312603033120357 ], [ 34.953465852168193, -17.312569131693717 ], [ 34.953494750340077, -17.312562168216999 ], [ 34.954026875506962, -17.314612148368443 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.957182302821295, -17.318536599276882 ], [ 34.955074672069358, -17.318897254404234 ], [ 34.954661651915764, -17.316980166566335 ], [ 34.954671838084693, -17.316977712023718 ], [ 34.954779599945176, -17.316957436047787 ], [ 34.954888318856462, -17.316942605057037 ], [ 34.954997696836713, -17.316933259699976 ], [ 34.955107434097982, -17.316929425589755 ], [ 34.955217229867827, -17.316931113234073 ], [ 34.955326783213508, -17.316938318006393 ], [ 34.955435793866819, -17.316951020158577 ], [ 34.955543963046949, -17.316969184875028 ], [ 34.955650994279274, -17.316992762368198 ], [ 34.955756594207948, -17.317021688014929 ], [ 34.955860473399802, -17.31705588253363 ], [ 34.955962347137593, -17.3170952522016 ], [ 34.9560619362003, -17.317139689111766 ], [ 34.956158967628355, -17.317189071468594 ], [ 34.956253175471744, -17.317243263921736 ], [ 34.956344301518882, -17.317302117937068 ], [ 34.956432096004264, -17.317365472203772 ], [ 34.956516318293041, -17.317433153076365 ], [ 34.956596737540529, -17.317504975050671 ], [ 34.956673133324919, -17.317580741272227 ], [ 34.956745296251377, -17.317660244075764 ], [ 34.956813028526042, -17.317743265554331 ], [ 34.956876144498082, -17.31782957815658 ], [ 34.956934471168672, -17.317918945310385 ], [ 34.956987848665094, -17.318011122071191 ], [ 34.957036130679015, -17.318105855793377 ], [ 34.957079184867595, -17.318202886822661 ], [ 34.957116893216238, -17.31830194920779 ], [ 34.957149152362099, -17.318402771429408 ], [ 34.957175873877567, -17.318505077144206 ], [ 34.957182302821295, -17.318536599276882 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.954859932451754, -17.320941430306988 ], [ 34.954821771081448, -17.320936983748155 ], [ 34.954713599562865, -17.320918818875519 ], [ 34.954606566065088, -17.320895241107298 ], [ 34.954500963968805, -17.320866315069665 ], [ 34.954397082730935, -17.320832120048479 ], [ 34.954295207091114, -17.320792749771989 ], [ 34.95419561629123, -17.320748312153899 ], [ 34.954098583309857, -17.320698928997505 ], [ 34.954004374114035, -17.320644735661915 ], [ 34.95391324693022, -17.320585880690935 ], [ 34.953825451536296, -17.320522525405838 ], [ 34.953741228577087, -17.320454843463274 ], [ 34.95366080890463, -17.320383020379118 ], [ 34.953584412945403, -17.320307253020022 ], [ 34.953512250096132, -17.320227749063722 ], [ 34.953444518149837, -17.320144726429767 ], [ 34.95338140275377, -17.320058412682187 ], [ 34.953323076900439, -17.319969044405653 ], [ 34.95326970045361, -17.319876866557024 ], [ 34.953221419710069, -17.319782131793826 ], [ 34.953178366998799, -17.319685099781751 ], [ 34.953140660318205, -17.319586036482843 ], [ 34.953108403012827, -17.31948521342645 ], [ 34.953081683490133, -17.319382906965 ], [ 34.953060574978281, -17.319279397516461 ], [ 34.953055168419084, -17.319242829332627 ], [ 34.955074672069358, -17.318897254404234 ], [ 34.955511377817565, -17.320924282071903 ], [ 34.955477979112175, -17.320930566296397 ], [ 34.955369257970489, -17.320945397833995 ], [ 34.95529630929034, -17.320951630797449 ], [ 34.954859932451754, -17.320941430306988 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 156.0, "radius": 223, "pivot": "1.16", "pivot_quadrant": "1.16A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.955074672069358, -17.318897254404234 ], [ 34.957182302821295, -17.318536599276882 ], [ 34.95719698451262, -17.318608585942435 ], [ 34.957212426395785, -17.318713014116351 ], [ 34.95722215719276, -17.318818075437807 ], [ 34.957226150222589, -17.318923481942836 ], [ 34.957224394530947, -17.319028944720859 ], [ 34.957216894920172, -17.319134174706594 ], [ 34.957203671936284, -17.319238883472298 ], [ 34.957184761812783, -17.319342784018371 ], [ 34.957160216371385, -17.319445591560026 ], [ 34.957130102880129, -17.319547024307777 ], [ 34.957094503869122, -17.319646804239927 ], [ 34.957053516904331, -17.31974465786454 ], [ 34.957007254320388, -17.319840316969159 ], [ 34.956955842912699, -17.319933519355892 ], [ 34.956899423589938, -17.320024009560218 ], [ 34.956838150988013, -17.320111539551114 ], [ 34.956772193046199, -17.320195869411073 ], [ 34.956701730546861, -17.320276767993608 ], [ 34.956626956620106, -17.320354013556926 ], [ 34.956548076214318, -17.320427394371769 ], [ 34.956465305534444, -17.320496709301732 ], [ 34.95637887144953, -17.320561768354683 ], [ 34.956289010870705, -17.320622393203507 ], [ 34.956195970101952, -17.320678417675055 ], [ 34.956100004164895, -17.320729688205471 ], [ 34.956001376099834, -17.32077606426137 ], [ 34.955900356244626, -17.320817418724921 ], [ 34.955797221493775, -17.320853638242355 ], [ 34.955692254539301, -17.320884623534763 ], [ 34.955585743095874, -17.320910289670167 ], [ 34.955511377817565, -17.320924282071903 ], [ 34.955074672069358, -17.318897254404234 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.933686532028823, -17.34741850738671 ], [ 34.930918907739319, -17.350619195960071 ], [ 34.930749371120577, -17.350482950059067 ], [ 34.9305831090279, -17.350334454986911 ], [ 34.930425167481324, -17.35017780671259 ], [ 34.930275979390657, -17.350013434618159 ], [ 34.930135953668632, -17.349841789256359 ], [ 34.930005474110168, -17.349663341115505 ], [ 34.929884898340468, -17.349478579329688 ], [ 34.929774556834893, -17.349288010337819 ], [ 34.929674752013298, -17.349092156495377 ], [ 34.929585757411353, -17.348891554642378 ], [ 34.92950781693105, -17.348686754631803 ], [ 34.929441144172401, -17.348478317822277 ], [ 34.9293859218484, -17.348266815539219 ], [ 34.929342301284514, -17.348052827508759 ], [ 34.929310402004319, -17.347836940268596 ], [ 34.92929031140222, -17.347619745560188 ], [ 34.929282084504514, -17.347401838706777 ], [ 34.929285743818809, -17.347183816981492 ], [ 34.92930127927297, -17.346966277970296 ], [ 34.929328648243064, -17.346749817933908 ], [ 34.929367775670698, -17.346535030173548 ], [ 34.929418554269198, -17.34632250340475 ], [ 34.929480844818194, -17.346112820143716 ], [ 34.929554476545505, -17.345906555110741 ], [ 34.929639247595759, -17.345704273655056 ], [ 34.929734925584, -17.345506530205324 ], [ 34.929841248233032, -17.345313866750129 ], [ 34.929957924092612, -17.34512681135249 ], [ 34.930084633338602, -17.344945876702717 ], [ 34.930221028649861, -17.34477155871328 ], [ 34.930343832257769, -17.344630621189719 ], [ 34.933686532028823, -17.34741850738671 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.2", "pivot_quadrant": "6.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.936458268544008, -17.344213063126752 ], [ 34.933686532028823, -17.34741850738671 ], [ 34.930343832257769, -17.344630621189719 ], [ 34.930366736160408, -17.344604335159747 ], [ 34.93052135648437, -17.344444664371434 ], [ 34.930684465810785, -17.344292983975372 ], [ 34.93085561706534, -17.344149709696961 ], [ 34.931034341135764, -17.344015234220802 ], [ 34.931220148157657, -17.343889926114542 ], [ 34.931412528857074, -17.343774128818861 ], [ 34.931610955946326, -17.343668159706397 ], [ 34.931814885569068, -17.343572309212028 ], [ 34.93202375879077, -17.343486840037041 ], [ 34.932237003130467, -17.34341198642927 ], [ 34.932454034129648, -17.343347953541233 ], [ 34.932674256953796, -17.343294916868011 ], [ 34.932897068022541, -17.343253021766351 ], [ 34.933121856663583, -17.343222383056439 ], [ 34.933348006786112, -17.343203084707323 ], [ 34.933574898569034, -17.343195179606763 ], [ 34.933801910159438, -17.343198689416489 ], [ 34.934028419376581, -17.343213604512808 ], [ 34.934253805416724, -17.343239884013023 ], [ 34.934477450554319, -17.343277455887517 ], [ 34.93469874183473, -17.343326217157209 ], [ 34.934917072753706, -17.343386034175726 ], [ 34.935131844919461, -17.343456742995702 ], [ 34.935342469692365, -17.343538149818031 ], [ 34.935548369797949, -17.343630031523016 ], [ 34.935748980908848, -17.343732136281769 ], [ 34.935943753191204, -17.343844184246329 ], [ 34.936132152811439, -17.343965868316541 ], [ 34.936313663399275, -17.34409685498165 ], [ 34.936458268544008, -17.344213063126752 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.924014427740026, -17.344857153121342 ], [ 34.926975301324241, -17.341756277068452 ], [ 34.930206135800262, -17.344526394378821 ], [ 34.93019316385849, -17.344541281858941 ], [ 34.93003854325503, -17.344700952461203 ], [ 34.929875433121211, -17.344852632448269 ], [ 34.929704280527545, -17.344995906055839 ], [ 34.929525554592857, -17.345130380560647 ], [ 34.929339745198348, -17.345255687357142 ], [ 34.929147361644837, -17.345371482967963 ], [ 34.92894893125672, -17.34547744998568 ], [ 34.928744997936427, -17.345573297942956 ], [ 34.928536120673414, -17.345658764108965 ], [ 34.928322872011776, -17.345733614209617 ], [ 34.928105836480654, -17.345797643070011 ], [ 34.92788560899178, -17.345850675176816 ], [ 34.927662793208455, -17.345892565159698 ], [ 34.927437999890635, -17.345923198189734 ], [ 34.927211845220448, -17.345942490294355 ], [ 34.926984949112807, -17.345950388587646 ], [ 34.926757933515866, -17.345946871415304 ], [ 34.926531420705857, -17.345931948414133 ], [ 34.926306031580957, -17.345905660485595 ], [ 34.926082383959056, -17.345868079683793 ], [ 34.925861090883807, -17.345819309017926 ], [ 34.925642758943994, -17.345759482169868 ], [ 34.925427986610323, -17.345688763127814 ], [ 34.9252173625948, -17.345607345736642 ], [ 34.925011464236583, -17.345515453166517 ], [ 34.92481085591924, -17.345413337301096 ], [ 34.924616087523482, -17.345301278046954 ], [ 34.92442769291965, -17.345179582566296 ], [ 34.924246188504156, -17.34504858443481 ], [ 34.924072071783883, -17.344908642727177 ], [ 34.924014427740026, -17.344857153121342 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.929874621707043, -17.3387198647094 ], [ 34.926975301324241, -17.341756277068452 ], [ 34.923737722930689, -17.338980377523537 ], [ 34.923844300080475, -17.338870324057513 ], [ 34.924007410942906, -17.33871864893819 ], [ 34.924178563186587, -17.338575380261723 ], [ 34.92435728769653, -17.338440910697358 ], [ 34.924543094607159, -17.338315608796531 ], [ 34.924735474644862, -17.338199817982947 ], [ 34.924933900523754, -17.338093855611472 ], [ 34.925137828390824, -17.337998012098549 ], [ 34.92534669931635, -17.33791255012633 ], [ 34.925559940825678, -17.337837703922908 ], [ 34.925776968468028, -17.33777367862054 ], [ 34.925997187418091, -17.337720649693534 ], [ 34.92621999410612, -17.337678762477399 ], [ 34.926444777871808, -17.337648131770756 ], [ 34.926670922637705, -17.337628841520697 ], [ 34.926897808597396, -17.337620944592842 ], [ 34.927124813913892, -17.337624462626497 ], [ 34.927351316423618, -17.337639385975457 ], [ 34.927576695341251, -17.337665673734445 ], [ 34.927800332960729, -17.337703253851203 ], [ 34.928021616347976, -17.33775202332404 ], [ 34.928239939020372, -17.337811848484161 ], [ 34.928454702608725, -17.337882565361848 ], [ 34.928665318496876, -17.337963980135974 ], [ 34.928871209434661, -17.338055869664995 ], [ 34.929071811119861, -17.338157982098618 ], [ 34.929266573744414, -17.338270037567831 ], [ 34.929454963501193, -17.338391728951922 ], [ 34.929636464046908, -17.338522722720082 ], [ 34.929810577917074, -17.338662659845419 ], [ 34.929874621707043, -17.3387198647094 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 669.0, "radius": 461, "pivot": "6.1", "pivot_quadrant": "6.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.926975301324241, -17.341756277068452 ], [ 34.924014427740026, -17.344857153121342 ], [ 34.923905820012344, -17.344760141032754 ], [ 34.923747888881501, -17.344603486403877 ], [ 34.923598711272561, -17.344439108239992 ], [ 34.923458696069524, -17.344267457110487 ], [ 34.923328227038496, -17.344089003519457 ], [ 34.92320766177577, -17.343904236615927 ], [ 34.923097330727906, -17.343713662852821 ], [ 34.922997536286125, -17.343517804598687 ], [ 34.922908551957605, -17.343317198705623 ], [ 34.922830621616164, -17.343112395037664 ], [ 34.922763958834061, -17.342903954963422 ], [ 34.922708746296955, -17.342692449817278 ], [ 34.922665135303461, -17.342478459333183 ], [ 34.922633245350909, -17.342262570055521 ], [ 34.922613163808208, -17.342045373731359 ], [ 34.922604945676802, -17.341827465688315 ], [ 34.922608613440303, -17.341609443202778 ], [ 34.922624157003398, -17.341391903862778 ], [ 34.922651533719979, -17.341175443929924 ], [ 34.922690668510434, -17.34096065670515 ], [ 34.922741454067939, -17.340748130902483 ], [ 34.922803751153019, -17.340538449035467 ], [ 34.922877388975664, -17.340332185820596 ], [ 34.922962165663776, -17.34012990660208 ], [ 34.92305784881701, -17.339932165802466 ], [ 34.923164176144006, -17.339739505403038 ], [ 34.923280856181734, -17.33955245345847 ], [ 34.923407569094621, -17.339371522649586 ], [ 34.923543967551495, -17.339197208878335 ], [ 34.923689677677785, -17.339029989908727 ], [ 34.923737722930689, -17.338980377523537 ], [ 34.926975301324241, -17.341756277068452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.917570487117061, -17.339711118027701 ], [ 34.920240082361659, -17.336946735747041 ], [ 34.923199307657669, -17.339448856263918 ], [ 34.923071705624515, -17.33958061908611 ], [ 34.922923099879576, -17.339718804051945 ], [ 34.922767167458396, -17.339849329976413 ], [ 34.922604335762102, -17.339971839080217 ], [ 34.922435051105928, -17.340085995557583 ], [ 34.922259777495817, -17.340191486496835 ], [ 34.922078995356557, -17.340288022738303 ], [ 34.921893200214804, -17.340375339667009 ], [ 34.921702901340709, -17.340453197938189 ], [ 34.921508620351901, -17.340521384133421 ], [ 34.921310889783442, -17.340579711345818 ], [ 34.921110251627987, -17.340628019692403 ], [ 34.920907255849897, -17.340666176752553 ], [ 34.920702458877493, -17.34069407793098 ], [ 34.920496422077605, -17.340711646744563 ], [ 34.920289710216586, -17.340718835032121 ], [ 34.920082889911853, -17.3407156230864 ], [ 34.919876528078532, -17.340702019708203 ], [ 34.919671190375219, -17.34067806218227 ], [ 34.91946743965304, -17.340643816175103 ], [ 34.919265834412677, -17.340599375555005 ], [ 34.919066927273107, -17.340544862134671 ], [ 34.918871263456573, -17.340480425337375 ], [ 34.918679379293778, -17.340406241787306 ], [ 34.918491800753571, -17.34032251482536 ], [ 34.918309042000999, -17.340229473951673 ], [ 34.918131603987675, -17.340127374196545 ], [ 34.917959973078531, -17.340016495421217 ], [ 34.917794619718457, -17.33989714155069 ], [ 34.917635997142689, -17.339769639740499 ], [ 34.917570487117061, -17.339711118027701 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.922942052048946, -17.33414882953203 ], [ 34.920240082361659, -17.336946735747041 ], [ 34.917269399022985, -17.334434927085208 ], [ 34.917287823506996, -17.334413783914261 ], [ 34.91742869674966, -17.334268322621668 ], [ 34.917577303095733, -17.334130141694978 ], [ 34.917733235223096, -17.33399961986192 ], [ 34.917896065733828, -17.333877114856964 ], [ 34.918065348325705, -17.333762962440996 ], [ 34.918240619015357, -17.333657475481164 ], [ 34.91842139741005, -17.333560943093559 ], [ 34.918607188024126, -17.333473629850932 ], [ 34.918797481637021, -17.33339577505766 ], [ 34.91899175668879, -17.333327592094061 ], [ 34.919189480709392, -17.333269267831611 ], [ 34.919390111777922, -17.333220962120961 ], [ 34.91959310000766, -17.333182807353882 ], [ 34.919797889052994, -17.333154908100525 ], [ 34.920003917633906, -17.333137340822887 ], [ 34.920210621074162, -17.333130153665365 ], [ 34.920417432848552, -17.333133366322823 ], [ 34.920623786135408, -17.33314696998664 ], [ 34.920829115369827, -17.333170927368968 ], [ 34.921032857793406, -17.333205172804849 ], [ 34.921234454996402, -17.333249612432297 ], [ 34.921433354447913, -17.333304124449441 ], [ 34.921629011009919, -17.333368559448381 ], [ 34.921820888431192, -17.333442740824655 ], [ 34.922008460816762, -17.333526465261187 ], [ 34.922191214068988, -17.333619503285469 ], [ 34.922368647296558, -17.333721599898446 ], [ 34.922540274186922, -17.333832475273329 ], [ 34.922705624339265, -17.333951825522362 ], [ 34.922864244553487, -17.334079323529647 ], [ 34.922942052048946, -17.33414882953203 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "2.5", "pivot_quadrant": "2.5D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.920240082361659, -17.336946735747041 ], [ 34.917570487117061, -17.339711118027701 ], [ 34.917484540134382, -17.339634339479865 ], [ 34.917340663832782, -17.339491611633623 ], [ 34.917204762595283, -17.339341847425441 ], [ 34.917077208916524, -17.339185457365442 ], [ 34.916958352407384, -17.339022870124747 ], [ 34.916848518836794, -17.338854531360347 ], [ 34.916748009238944, -17.338680902493451 ], [ 34.916657099088269, -17.338502459444559 ], [ 34.916576037544537, -17.338319691328788 ], [ 34.916505046770205, -17.338133099115122 ], [ 34.916444321321642, -17.337943194253128 ], [ 34.916394027616185, -17.337750497270942 ], [ 34.916354303476247, -17.337555536348415 ], [ 34.916325257751936, -17.337358845869311 ], [ 34.916306970023015, -17.337160964956428 ], [ 34.916299490381085, -17.336962435993936 ], [ 34.91630283929274, -17.336763803140538 ], [ 34.91631700754381, -17.33656561083799 ], [ 34.916341956265015, -17.336368402318797 ], [ 34.916377617038826, -17.33617271811719 ], [ 34.916423892087501, -17.335979094587614 ], [ 34.91648065454131, -17.335788062434609 ], [ 34.916547748786755, -17.335600145258304 ], [ 34.916624990893368, -17.33541585811918 ], [ 34.916712169118249, -17.335235706126554 ], [ 34.916809044486669, -17.335060183054143 ], [ 34.916915351447358, -17.334889769986802 ], [ 34.917030798600706, -17.334724934001962 ], [ 34.917155069497618, -17.334566126889655 ], [ 34.917269399022985, -17.334434927085208 ], [ 34.920240082361659, -17.336946735747041 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.915191282440283, -17.337693243965902 ], [ 34.913379761071603, -17.335625170111705 ], [ 34.915518445366438, -17.33371081141938 ], [ 34.91556591333611, -17.333763124395745 ], [ 34.915660056119648, -17.333878556262661 ], [ 34.915747779977927, -17.333998562055793 ], [ 34.915828844461352, -17.334122812856673 ], [ 34.915903027371279, -17.33425096811143 ], [ 34.9159701253691, -17.334382676564005 ], [ 34.916029954533762, -17.33451757721895 ], [ 34.916082350865892, -17.334655300330706 ], [ 34.916127170737504, -17.334795468417038 ], [ 34.916164291285796, -17.334937697293565 ], [ 34.916193610750071, -17.335081597126699 ], [ 34.916215048750807, -17.335226773502143 ], [ 34.916228546510219, -17.33537282850585 ], [ 34.916234067013484, -17.335519361814619 ], [ 34.916231595110446, -17.335665971793379 ], [ 34.916221137557322, -17.335812256595954 ], [ 34.91620272299842, -17.335957815266493 ], [ 34.916176401887839, -17.336102248838476 ], [ 34.916142246351313, -17.336245161428248 ], [ 34.916100349988831, -17.336386161320107 ], [ 34.916050827618207, -17.33652486203999 ], [ 34.915993814960572, -17.336660883414858 ], [ 34.915929468268565, -17.336793852614697 ], [ 34.915857963898262, -17.336923405174531 ], [ 34.915779497825845, -17.337049185993408 ], [ 34.915694285110668, -17.337170850307807 ], [ 34.915602559305853, -17.337288064636702 ], [ 34.915504571818289, -17.337400507695637 ], [ 34.915400591219608, -17.337507871277509 ], [ 34.91529090251003, -17.337609861097384 ], [ 34.915191282440283, -17.337693243965902 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911437392245574, -17.333407717834426 ], [ 34.913379761071603, -17.335625170111705 ], [ 34.911255677582851, -17.337526459469718 ], [ 34.911170570838692, -17.337442025530336 ], [ 34.911070267333443, -17.337331481742687 ], [ 34.910976125197692, -17.337216047643373 ], [ 34.910888402465794, -17.337096039638435 ], [ 34.910807339575037, -17.336971786670553 ], [ 34.910733158706634, -17.336843629317364 ], [ 34.910666063176791, -17.336711918857905 ], [ 34.910606236879538, -17.336577016309619 ], [ 34.910553843782843, -17.336439291438793 ], [ 34.910509027479215, -17.336299121746951 ], [ 34.910471910792388, -17.336156891436062 ], [ 34.910442595440756, -17.336012990355417 ], [ 34.910421161758748, -17.335867812933003 ], [ 34.910407668476871, -17.335721757094326 ], [ 34.910402152560884, -17.335575223171723 ], [ 34.910404629110673, -17.335428612807021 ], [ 34.910415091319095, -17.335282327850589 ], [ 34.910433510490847, -17.335136769259989 ], [ 34.910459836121319, -17.334992336000848 ], [ 34.910493996035243, -17.334849423953397 ], [ 34.910535896584648, -17.334708424827415 ], [ 34.910585422905875, -17.334569725088556 ], [ 34.910642439234486, -17.334433704899109 ], [ 34.910706789277619, -17.334300737076106 ], [ 34.910778296642519, -17.334171186069447 ], [ 34.910856765320155, -17.334045406963057 ], [ 34.910941980222667, -17.333923744501693 ], [ 34.911033707772944, -17.33380653214607 ], [ 34.911131696544956, -17.333694091159053 ], [ 34.911235677953037, -17.333586729725003 ], [ 34.911345366988073, -17.33348474210538 ], [ 34.911437392245574, -17.333407717834426 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "2.1", "pivot_quadrant": "2.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913379761071603, -17.335625170111705 ], [ 34.915191282440283, -17.337693243965902 ], [ 34.915175806337395, -17.337706197599196 ], [ 34.915055618172943, -17.337796616722148 ], [ 34.914930667446747, -17.337880870624524 ], [ 34.914801296644683, -17.337958728363152 ], [ 34.914667860369669, -17.338029976526471 ], [ 34.914530724369655, -17.338094419819619 ], [ 34.914390264535022, -17.338151881599728 ], [ 34.914246865868172, -17.338202204360293 ], [ 34.914100921428201, -17.338245250162895 ], [ 34.913952831253319, -17.338280901015388 ], [ 34.913803001264291, -17.33830905919536 ], [ 34.913651842151559, -17.338329647518076 ], [ 34.913499768249508, -17.338342609548064 ], [ 34.913347196400544, -17.338347909753889 ], [ 34.913194544812328, -17.338345533605516 ], [ 34.913042231911355, -17.33833548761422 ], [ 34.912890675195818, -17.338317799314741 ], [ 34.912740290091094, -17.338292517189796 ], [ 34.912591488810882, -17.33825971053723 ], [ 34.912444679227121, -17.33821946928002 ], [ 34.912300263751881, -17.338171903719815 ], [ 34.912158638234182, -17.338117144234534 ], [ 34.912020190874792, -17.338055340920988 ], [ 34.911885301162073, -17.337986663183429 ], [ 34.911754338831614, -17.33791129926913 ], [ 34.91162766285283, -17.337829455752399 ], [ 34.911505620444707, -17.337741356968213 ], [ 34.911388546124208, -17.337647244397367 ], [ 34.911276760789143, -17.337547376004352 ], [ 34.911255677582851, -17.337526459469718 ], [ 34.913379761071603, -17.335625170111705 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909113153334729, -17.34030905206204 ], [ 34.911578911920543, -17.342468032199982 ], [ 34.911483266003707, -17.342566783644735 ], [ 34.911354818022311, -17.342686208422425 ], [ 34.911220037986965, -17.342799013216435 ], [ 34.911079295321287, -17.342904888824119 ], [ 34.910932975794793, -17.343003545035192 ], [ 34.910781480465488, -17.343094711427394 ], [ 34.910625224580507, -17.343178138107756 ], [ 34.910464636437894, -17.343253596397744 ], [ 34.9103001562125, -17.343320879460098 ], [ 34.910132234749348, -17.343379802865964 ], [ 34.909961332327725, -17.343430205100489 ], [ 34.90978791739942, -17.343471948005583 ], [ 34.909612465304448, -17.343504917158779 ], [ 34.909435456967969, -17.343529022186893 ], [ 34.909257377581909, -17.343544197013831 ], [ 34.90907871527471, -17.343550400041732 ], [ 34.90889995977318, -17.343547614265091 ], [ 34.908721601059909, -17.343535847317359 ], [ 34.908544128029973, -17.343515131450051 ], [ 34.908368027150622, -17.343485523444404 ], [ 34.908193781127558, -17.343447104455645 ], [ 34.908021867581709, -17.343399979790647 ], [ 34.907852757739754, -17.343344278619131 ], [ 34.90768691514225, -17.343280153619709 ], [ 34.907524794372911, -17.343207780561201 ], [ 34.90736683981239, -17.343127357820926 ], [ 34.907213484420012, -17.343039105840777 ], [ 34.907065148546927, -17.342943266522941 ], [ 34.906922238783757, -17.342840102566772 ], [ 34.906860112803329, -17.342790160574449 ], [ 34.909113153334729, -17.34030905206204 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909113153334729, -17.34030905206204 ], [ 34.906533452371185, -17.338050305737823 ], [ 34.90660624542992, -17.337975151605978 ], [ 34.906734693855789, -17.337855729846009 ], [ 34.906869473666958, -17.337742928108351 ], [ 34.907010215442298, -17.337637055562148 ], [ 34.907156533422004, -17.337538402384133 ], [ 34.907308026565047, -17.33744723896336 ], [ 34.907464279648224, -17.337363815160227 ], [ 34.907624864404212, -17.337288359621752 ], [ 34.907789340695246, -17.337221079155054 ], [ 34.907957257719431, -17.337162158160531 ], [ 34.908128155246089, -17.33711175812665 ], [ 34.908301564877085, -17.337070017187351 ], [ 34.908477011330419, -17.337037049743579 ], [ 34.908654013742748, -17.337012946149805 ], [ 34.908832086987054, -17.336997772466383 ], [ 34.909010743002206, -17.336991570278656 ], [ 34.909189492130309, -17.33699435658291 ], [ 34.9093678444586, -17.337006123739954 ], [ 34.909545311161978, -17.337026839495923 ], [ 34.90972140584249, -17.337056447070864 ], [ 34.909895645862328, -17.337094865314214 ], [ 34.910067553666394, -17.3371419889273 ], [ 34.910236658090895, -17.337197688751889 ], [ 34.910402495654601, -17.337261812124172 ], [ 34.910564611828974, -17.33733418329313 ], [ 34.910722562283695, -17.337414603902154 ], [ 34.910875914104444, -17.337502853532694 ], [ 34.911024246979174, -17.337598690308319 ], [ 34.911167154350139, -17.337701851557512 ], [ 34.911304244527969, -17.337812054533547 ], [ 34.91134641261079, -17.337849727197245 ], [ 34.909113153334729, -17.34030905206204 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 414.0, "radius": 363, "pivot": "2.2", "pivot_quadrant": "2.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911578911920543, -17.342468032199982 ], [ 34.909113153334729, -17.34030905206204 ], [ 34.91134641261079, -17.337849727197245 ], [ 34.91143514176526, -17.337928997189451 ], [ 34.911559487286333, -17.338052359005587 ], [ 34.91167694027061, -17.338181801868199 ], [ 34.911787178786682, -17.338316970995947 ], [ 34.911889900674801, -17.33845749591223 ], [ 34.911984824375082, -17.338602991460462 ], [ 34.91207168969926, -17.33875305885968 ], [ 34.912150258544031, -17.338907286797372 ], [ 34.912220315543756, -17.339065252556818 ], [ 34.912281668660903, -17.339226523175476 ], [ 34.912334149712621, -17.339390656631728 ], [ 34.91237761483189, -17.339557203056199 ], [ 34.912411944862086, -17.339725705964806 ], [ 34.912437045683824, -17.339895703509814 ], [ 34.912452848473158, -17.340066729745672 ], [ 34.912459309890508, -17.340238315906035 ], [ 34.912456412199738, -17.340409991688645 ], [ 34.912444163317041, -17.340581286544278 ], [ 34.912422596789526, -17.340751730966492 ], [ 34.912391771703525, -17.340920857778553 ], [ 34.912351772523039, -17.341088203413818 ], [ 34.912302708858348, -17.34125330918652 ], [ 34.912244715165983, -17.341415722548859 ], [ 34.912177950380325, -17.341574998331588 ], [ 34.912102597478352, -17.341730699964163 ], [ 34.912018862978236, -17.341882400671473 ], [ 34.911926976373564, -17.342029684643691 ], [ 34.91182718950445, -17.342172148176019 ], [ 34.911719775867432, -17.34230940077537 ], [ 34.911605029865996, -17.34244106623078 ], [ 34.911578911920543, -17.342468032199982 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899977306418968, -17.342598676400389 ], [ 34.900577206073855, -17.344757029496293 ], [ 34.90053099248378, -17.344770656279508 ], [ 34.900412035589035, -17.344799284489611 ], [ 34.900291681601324, -17.344821894278759 ], [ 34.900170260413489, -17.344838423671792 ], [ 34.900048104844025, -17.344848827360014 ], [ 34.899925549724713, -17.344853076825434 ], [ 34.899802930982794, -17.344851160418948 ], [ 34.899680584720031, -17.344843083392274 ], [ 34.899558846291384, -17.344828867883589 ], [ 34.899438049385651, -17.34480855285684 ], [ 34.899318525110722, -17.344782193994938 ], [ 34.899200601085958, -17.344749863547143 ], [ 34.899084600543979, -17.344711650130986 ], [ 34.898970841444694, -17.344667658489421 ], [ 34.898859635603621, -17.344618009203618 ], [ 34.898751287837094, -17.344562838362481 ], [ 34.898646095126765, -17.344502297189571 ], [ 34.898544345805426, -17.344436551628583 ], [ 34.898446318766688, -17.344365781888438 ], [ 34.898352282700444, -17.34429018194934 ], [ 34.898262495356455, -17.344209959030934 ], [ 34.898177202837687, -17.344125333024376 ], [ 34.898096638925864, -17.344036535889487 ], [ 34.898021024440638, -17.343943811018971 ], [ 34.897950566634307, -17.343847412571144 ], [ 34.89788545862384, -17.343747604773341 ], [ 34.897825878861511, -17.343644661197509 ], [ 34.897771990645907, -17.343538864010416 ], [ 34.897723941674307, -17.343430503200111 ], [ 34.897681863638006, -17.343319875781045 ], [ 34.897645871861357, -17.343207284979929 ], [ 34.897632654475345, -17.343156624592137 ], [ 34.899977306418968, -17.342598676400389 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899977306418968, -17.342598676400389 ], [ 34.8993698935897, -17.3404132919784 ], [ 34.899392664965589, -17.340407811872627 ], [ 34.899513016297661, -17.340385202886463 ], [ 34.899634434697063, -17.340368674166911 ], [ 34.89975658737589, -17.340358271015273 ], [ 34.899879139534015, -17.340354021943661 ], [ 34.90000175527662, -17.340355938596865 ], [ 34.900124098534818, -17.340364015720475 ], [ 34.900245833986595, -17.340378231175233 ], [ 34.900366627975728, -17.340398545997807 ], [ 34.900486149426307, -17.340424904507497 ], [ 34.900604070749914, -17.340457234458924 ], [ 34.90072006874351, -17.340495447239984 ], [ 34.90083382547509, -17.340539438114668 ], [ 34.900945029155146, -17.340589086510239 ], [ 34.901053374990944, -17.340644256347534 ], [ 34.901158566022026, -17.340704796413981 ], [ 34.901260313933982, -17.34077054077801 ], [ 34.901358339848642, -17.340841309243807 ], [ 34.901452375088432, -17.340916907845159 ], [ 34.901542161912666, -17.340997129377051 ], [ 34.901627454224055, -17.34108175396354 ], [ 34.901708018243141, -17.34117054966033 ], [ 34.901783633149101, -17.341263273090505 ], [ 34.901854091685024, -17.341359670111498 ], [ 34.901919200725978, -17.341459476511659 ], [ 34.901978781808353, -17.341562418734288 ], [ 34.902032671619118, -17.341668214627489 ], [ 34.902080722443529, -17.341776574217395 ], [ 34.902122802569984, -17.341887200502885 ], [ 34.902158796651207, -17.341999790269696 ], [ 34.902178392629686, -17.3420748920176 ], [ 34.899977306418968, -17.342598676400389 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.3", "pivot_quadrant": "2.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900577206073855, -17.344757029496293 ], [ 34.899977306418968, -17.342598676400389 ], [ 34.902178392629686, -17.3420748920176 ], [ 34.902188606020459, -17.342114034921313 ], [ 34.902212148962079, -17.342229621324904 ], [ 34.9022293609356, -17.342346232669474 ], [ 34.902240194752764, -17.342463549334198 ], [ 34.902244620706924, -17.34258124976445 ], [ 34.902242626654697, -17.342699011353165 ], [ 34.902234218049344, -17.342816511325012 ], [ 34.902219417925892, -17.342933427621141 ], [ 34.902198266838255, -17.343049439781904 ], [ 34.902170822748069, -17.343164229825184 ], [ 34.902137160866111, -17.343277483118008 ], [ 34.902097373446153, -17.343388889238934 ], [ 34.902051569532283, -17.343498142828913 ], [ 34.901999874660113, -17.343604944428311 ], [ 34.901942430512797, -17.343709001297707 ], [ 34.901879394532841, -17.343810028220332 ], [ 34.901810939490574, -17.343907748283865 ], [ 34.901737253010715, -17.344001893639497 ], [ 34.901658537058189, -17.344092206236112 ], [ 34.901575007384508, -17.344178438527649 ], [ 34.901486892936596, -17.344260354151714 ], [ 34.901394435229165, -17.344337728577433 ], [ 34.901297887682823, -17.344410349720999 ], [ 34.901197514929372, -17.344478018526939 ], [ 34.901093592086589, -17.344540549513926 ], [ 34.90098640400398, -17.344597771283127 ], [ 34.900876244482049, -17.344649526988103 ], [ 34.900763415466933, -17.344695674764722 ], [ 34.900648226222749, -17.344736088120147 ], [ 34.900577206073855, -17.344757029496293 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89784433134804, -17.347383688817565 ], [ 34.896270521422032, -17.345778057340958 ], [ 34.898018534309401, -17.34427437726421 ], [ 34.898049630555178, -17.344308651412607 ], [ 34.898125245197328, -17.344401376276529 ], [ 34.898195703304218, -17.344497774650247 ], [ 34.898260811752031, -17.344597582318404 ], [ 34.898320392078851, -17.344700525720842 ], [ 34.898374280973691, -17.344806322702414 ], [ 34.898422330724294, -17.344914683286273 ], [ 34.898464409622015, -17.345025310468575 ], [ 34.898500402322924, -17.345137901032597 ], [ 34.898530210164083, -17.345252146379647 ], [ 34.898553751434022, -17.345367733374978 ], [ 34.898570961596832, -17.345484345205968 ], [ 34.898581793469205, -17.345601662250449 ], [ 34.898586217349859, -17.345719362952764 ], [ 34.898584221101068, -17.345837124705092 ], [ 34.898575810182095, -17.345954624731661 ], [ 34.898561007634342, -17.346071540973472 ], [ 34.898539854018331, -17.34618755297101 ], [ 34.898512407302668, -17.346302342742597 ], [ 34.898478742705286, -17.346415595656016 ], [ 34.898438952487425, -17.346527001290848 ], [ 34.898393145700823, -17.346636254289407 ], [ 34.898341447888967, -17.346743055193635 ], [ 34.898284000743089, -17.34684711126604 ], [ 34.898220961713911, -17.346948137292031 ], [ 34.898152503580086, -17.347045856361728 ], [ 34.898078813974848, -17.347140000629064 ], [ 34.898000094871662, -17.347230312045884 ], [ 34.897916562030716, -17.347316543069386 ], [ 34.89784433134804, -17.347383688817565 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894633955948727, -17.344108401435214 ], [ 34.896270521422032, -17.345778057340958 ], [ 34.894530375270897, -17.347274970273929 ], [ 34.89451869393659, -17.347263380014812 ], [ 34.894438130123419, -17.347174581368925 ], [ 34.894362515902834, -17.347081855064534 ], [ 34.894292058526425, -17.346985455263962 ], [ 34.894226951109985, -17.346885646198167 ], [ 34.894167372104157, -17.346782701442645 ], [ 34.894113484805423, -17.346676903167346 ], [ 34.894065436908569, -17.346568541363308 ], [ 34.894023360101947, -17.346457913047725 ], [ 34.893987369706529, -17.346345321449771 ], [ 34.893957564360043, -17.346231075179425 ], [ 34.893934025746624, -17.346115487381585 ], [ 34.893916818373043, -17.345998874877647 ], [ 34.893905989392053, -17.345881557297147 ], [ 34.893901568473275, -17.345763856201621 ], [ 34.893903567721992, -17.3456460942032 ], [ 34.893911981646049, -17.34552859408036 ], [ 34.893926787171132, -17.345411677893143 ], [ 34.893947943704113, -17.345295666100494 ], [ 34.893975393244382, -17.345180876681777 ], [ 34.894009060543098, -17.345067624265408 ], [ 34.894048853309421, -17.344956219266344 ], [ 34.894094662463672, -17.344846967035298 ], [ 34.894146362436459, -17.344740167021918 ], [ 34.894203811512831, -17.34463611195395 ], [ 34.894266852220959, -17.344535087034966 ], [ 34.894335311763747, -17.344437369162709 ], [ 34.894409002492552, -17.344343226170164 ], [ 34.894487722421609, -17.344252916091463 ], [ 34.894571255781663, -17.344166686454802 ], [ 34.894633955948727, -17.344108401435214 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "2.4", "pivot_quadrant": "2.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896270521422032, -17.345778057340958 ], [ 34.89784433134804, -17.347383688817565 ], [ 34.897828444407587, -17.347398457340631 ], [ 34.897735983525699, -17.347475830332453 ], [ 34.897639432814358, -17.347548449964961 ], [ 34.89753905691407, -17.347616117186867 ], [ 34.897435130951216, -17.347678646521146 ], [ 34.897327939783857, -17.347735866573512 ], [ 34.897217777220966, -17.347787620502217 ], [ 34.897104945217023, -17.347833766448016 ], [ 34.896989753044323, -17.347874177923067 ], [ 34.8968725164452, -17.347908744157682 ], [ 34.896753556766491, -17.347937370403951 ], [ 34.896633200078661, -17.347959978195529 ], [ 34.896511776281947, -17.347976505562741 ], [ 34.896389618201965, -17.347986907202465 ], [ 34.896267060677431, -17.347991154602312 ], [ 34.89614443964215, -17.347989236118849 ], [ 34.896022091204195, -17.347981157009478 ], [ 34.895900350724474, -17.347966939418107 ], [ 34.895779551897398, -17.347946622314364 ], [ 34.895660025836158, -17.347920261386893 ], [ 34.895542100164981, -17.347887928890579 ], [ 34.895426098121014, -17.347849713448607 ], [ 34.89531233766828, -17.347805719809461 ], [ 34.895201130625999, -17.347756068559807 ], [ 34.89509278181383, -17.347700895793917 ], [ 34.894987588216253, -17.347640352740644 ], [ 34.894885838168513, -17.347574605348829 ], [ 34.894787810566186, -17.347503833832434 ], [ 34.894693774100759, -17.347428232176501 ], [ 34.894603986523009, -17.347348007605405 ], [ 34.894530375270897, -17.347274970273929 ], [ 34.896270521422032, -17.345778057340958 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.913636518942788, -17.329266359662952 ], [ 34.911721763444021, -17.327270799151147 ], [ 34.914031362474837, -17.325516182075784 ], [ 34.914117900913318, -17.325634575111025 ], [ 34.914198960029665, -17.325758827177712 ], [ 34.914273137824281, -17.325886983615426 ], [ 34.914340230972627, -17.326018693164876 ], [ 34.914400055566908, -17.326153594827613 ], [ 34.914452447620299, -17.326291318855283 ], [ 34.914497263516544, -17.326431487763152 ], [ 34.914534380403744, -17.326573717364585 ], [ 34.914563696531239, -17.326717617824006 ], [ 34.914585131528675, -17.326862794725379 ], [ 34.914598626626493, -17.327008850153227 ], [ 34.914604144817197, -17.327155383783179 ], [ 34.914601670956962, -17.327301993979287 ], [ 34.914591211807391, -17.327448278894774 ], [ 34.91457279601719, -17.327593837573485 ], [ 34.914546474043796, -17.327738271048865 ], [ 34.914512318015369, -17.327881183437523 ], [ 34.914470421533231, -17.328022183024327 ], [ 34.914420899415532, -17.328160883336039 ], [ 34.914363887382741, -17.328296904200737 ], [ 34.914299541685793, -17.328429872789819 ], [ 34.914228038678019, -17.328559424639966 ], [ 34.914149574331894, -17.328685204652192 ], [ 34.914064363702025, -17.328806868065175 ], [ 34.913972640335864, -17.328924081400377 ], [ 34.913874655633592, -17.329036523376065 ], [ 34.913770678159203, -17.32914388578811 ], [ 34.913660992904397, -17.329245874354772 ], [ 34.913636518942788, -17.329266359662952 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.909685584378018, -17.325148690849765 ], [ 34.911721763444021, -17.327270799151147 ], [ 34.909460106454006, -17.328988994353146 ], [ 34.909440549923985, -17.328967439651969 ], [ 34.909346413613996, -17.328852004133012 ], [ 34.909258696485878, -17.328731994784103 ], [ 34.909177638961573, -17.328607740551625 ], [ 34.909103463207565, -17.328479582016655 ], [ 34.909036372526053, -17.328347870461474 ], [ 34.908976550797789, -17.32821296690652 ], [ 34.908924161978199, -17.32807524112085 ], [ 34.908879349648117, -17.327935070608461 ], [ 34.908842236620366, -17.327792839573583 ], [ 34.908812924603325, -17.327648937867501 ], [ 34.908791493922287, -17.327503759919889 ], [ 34.908778003299552, -17.327357703657697 ], [ 34.908772489693582, -17.327211169414433 ], [ 34.90877496819796, -17.327064558832792 ], [ 34.908785432000194, -17.326918273763734 ], [ 34.908803852400631, -17.326772715165127 ], [ 34.908830178891286, -17.32662828200262 ], [ 34.908864339294539, -17.326485370156192 ], [ 34.908906239961134, -17.326344371335054 ], [ 34.908955766027034, -17.326205672004026 ], [ 34.90901278172857, -17.3260696523243 ], [ 34.909077130774563, -17.325936685111486 ], [ 34.909148636775029, -17.325807134813829 ], [ 34.909227103724675, -17.325681356513325 ], [ 34.909312316540387, -17.325559694952492 ], [ 34.90940404165076, -17.325442483589615 ], [ 34.909502027636492, -17.325330043684811 ], [ 34.909606005919557, -17.325222683419522 ], [ 34.909685584378018, -17.325148690849765 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.1", "pivot_quadrant": "3.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.911721763444021, -17.327270799151147 ], [ 34.913636518942788, -17.329266359662952 ], [ 34.913545900507494, -17.329342209523453 ], [ 34.91342571642943, -17.329432627237008 ], [ 34.913300770089045, -17.329516879657564 ], [ 34.913171403960227, -17.329594735846065 ], [ 34.913037972633042, -17.329665982395142 ], [ 34.912900841841903, -17.3297304240144 ], [ 34.912760387462882, -17.329787884065563 ], [ 34.912616994483479, -17.329838205046872 ], [ 34.912471055947115, -17.329881249024769 ], [ 34.912322971875888, -17.329916898012115 ], [ 34.912173148173757, -17.329945054291645 ], [ 34.912021995513982, -17.329965640683806 ], [ 34.911869928213214, -17.329978600758434 ], [ 34.911717363095775, -17.329983898989447 ], [ 34.911564718350839, -17.329981520852233 ], [ 34.911412412386156, -17.329971472863519 ], [ 34.911260862680884, -17.329953782563518 ], [ 34.911110484641192, -17.329928498440431 ], [ 34.910961690461392, -17.329895689797588 ], [ 34.910814887993944, -17.32985544656341 ], [ 34.910670479631406, -17.329807879044964 ], [ 34.910528861203304, -17.329753117625536 ], [ 34.910390420890941, -17.329691312407235 ], [ 34.910255538163376, -17.329622632799548 ], [ 34.910124582737076, -17.329547267054856 ], [ 34.909997913562464, -17.329465421752481 ], [ 34.90987587783988, -17.3293773212323 ], [ 34.909758810067963, -17.329283206979852 ], [ 34.909647031126617, -17.329183336964235 ], [ 34.90954084739743, -17.329077984931061 ], [ 34.909460106454006, -17.328988994353146 ], [ 34.911721763444021, -17.327270799151147 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906021160934294, -17.32453810278799 ], [ 34.904885066790669, -17.326570895183487 ], [ 34.904806230599256, -17.326530749763023 ], [ 34.904701047182016, -17.326470210855359 ], [ 34.904599306688482, -17.326404467496388 ], [ 34.904501287988097, -17.326333699888984 ], [ 34.904407259747913, -17.32625810200749 ], [ 34.904317479696211, -17.32617788106592 ], [ 34.904232193915959, -17.326093256949981 ], [ 34.904151636170468, -17.326004461614346 ], [ 34.904076027262448, -17.325911738446724 ], [ 34.90400557442895, -17.325815341600823 ], [ 34.903940470773314, -17.32571553529953 ], [ 34.903880894735885, -17.325612593110719 ], [ 34.903827009605024, -17.325506797197328 ], [ 34.90377896306962, -17.325398437543917 ], [ 34.903736886814265, -17.32528781116179 ], [ 34.903700896158483, -17.325175221274797 ], [ 34.903671089740698, -17.325060976488256 ], [ 34.903647549248021, -17.324945389942979 ], [ 34.903630339192389, -17.324828778456951 ], [ 34.903619506733925, -17.324711461656918 ], [ 34.90361508155182, -17.324593761102271 ], [ 34.903617075763009, -17.324475999403674 ], [ 34.903625483889194, -17.324358499338782 ], [ 34.903640282871983, -17.324241582967488 ], [ 34.903661432136161, -17.324125570749231 ], [ 34.903688873701093, -17.324010780664615 ], [ 34.903722532339778, -17.323897527343828 ], [ 34.903762315785151, -17.323786121204328 ], [ 34.903808114983079, -17.323676867599978 ], [ 34.903859804391431, -17.323570065984185 ], [ 34.903896908377526, -17.323502846894009 ], [ 34.906021160934294, -17.32453810278799 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.906021160934294, -17.32453810278799 ], [ 34.907099870341185, -17.322607987848503 ], [ 34.907107996990085, -17.322612126146115 ], [ 34.907213178728831, -17.322672663949191 ], [ 34.907314917813316, -17.322738406113043 ], [ 34.907412935389594, -17.322809172447901 ], [ 34.907506962802877, -17.322884768993358 ], [ 34.907596742334007, -17.322964988550062 ], [ 34.907682027905636, -17.323049611247448 ], [ 34.907762585756814, -17.323138405146423 ], [ 34.907838195083627, -17.323231126874965 ], [ 34.907908648644458, -17.32332752229518 ], [ 34.907973753328015, -17.323427327199781 ], [ 34.908033330682649, -17.323530268036201 ], [ 34.908087217405573, -17.323636062656309 ], [ 34.908135265790484, -17.323744421089724 ], [ 34.908177344132525, -17.323855046338515 ], [ 34.908213337089279, -17.323967635191241 ], [ 34.908243145997119, -17.324081879053907 ], [ 34.908266689141676, -17.324197464795841 ], [ 34.908283901981953, -17.324314075607841 ], [ 34.908294737327296, -17.324431391870569 ], [ 34.908299165466907, -17.324549092030502 ], [ 34.908297174251452, -17.324666853481297 ], [ 34.908288769126365, -17.324784353448031 ], [ 34.908273973117211, -17.32490126987188 ], [ 34.908252826766599, -17.325017282292816 ], [ 34.908225388023233, -17.325132072728039 ], [ 34.908191732083218, -17.325245326543502 ], [ 34.908151951184053, -17.32535673331634 ], [ 34.908106154351955, -17.325465987685721 ], [ 34.908071600970572, -17.325537386101097 ], [ 34.906021160934294, -17.32453810278799 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "3.2", "pivot_quadrant": "3.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.904885066790669, -17.326570895183487 ], [ 34.906021160934294, -17.32453810278799 ], [ 34.908071600970572, -17.325537386101097 ], [ 34.908054467103149, -17.325572790189899 ], [ 34.90799703109991, -17.325676848086957 ], [ 34.907934003762392, -17.325777876157318 ], [ 34.907865557837262, -17.325875597485545 ], [ 34.907791880924258, -17.325969744219353 ], [ 34.907713174962034, -17.326060058303852 ], [ 34.907629655674789, -17.326146292188934 ], [ 34.907541551980941, -17.326228209507818 ], [ 34.907449105365721, -17.326305585725002 ], [ 34.907352569219306, -17.326378208751755 ], [ 34.907252208142296, -17.32644587952749 ], [ 34.907148297220381, -17.326508412565456 ], [ 34.90704112127046, -17.326565636461215 ], [ 34.906930974059705, -17.326617394362458 ], [ 34.906818157500545, -17.326663544399111 ], [ 34.906702980822907, -17.326703960072088 ], [ 34.906585759726646, -17.326738530600174 ], [ 34.906466815516076, -17.326767161223724 ], [ 34.906346474219269, -17.326789773464377 ], [ 34.906225065694215, -17.326806305340277 ], [ 34.906102922724692, -17.326816711535912 ], [ 34.905980380107977, -17.326820963526419 ], [ 34.905857773736962, -17.326819049655761 ], [ 34.905735439679553, -17.326810975168716 ], [ 34.905613713257182, -17.326796762196473 ], [ 34.905492928125767, -17.326776449696034 ], [ 34.905373415360891, -17.326750093343406 ], [ 34.905255502550368, -17.326717765380913 ], [ 34.905139512896064, -17.326679554419297 ], [ 34.90502576432803, -17.326635565194774 ], [ 34.904914568632925, -17.326585918281896 ], [ 34.904885066790669, -17.326570895183487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900551100160158, -17.32491517010353 ], [ 34.900776626466843, -17.327745490872061 ], [ 34.900656786239431, -17.327755697621463 ], [ 34.900504221756528, -17.327760987206652 ], [ 34.900351578120073, -17.327758600371943 ], [ 34.900199273734728, -17.327748543657901 ], [ 34.900047726075364, -17.327730844628654 ], [ 34.899897350542489, -17.327705551796367 ], [ 34.899748559323548, -17.327672734488232 ], [ 34.899601760262883, -17.327632482656444 ], [ 34.899457355743735, -17.327584906631635 ], [ 34.899315741585028, -17.327530136820421 ], [ 34.899177305956393, -17.327468323347929 ], [ 34.899042428314019, -17.327399635646241 ], [ 34.898911478360418, -17.327324261989983 ], [ 34.898784815031014, -17.327242408980108 ], [ 34.898662785510126, -17.327154300977668 ], [ 34.898545724279373, -17.32706017948869 ], [ 34.898433952200669, -17.326960302502119 ], [ 34.898327775636837, -17.326854943782664 ], [ 34.898227485611763, -17.326744392120304 ], [ 34.898133357012782, -17.326628950538552 ], [ 34.898045647837129, -17.326508935463988 ], [ 34.897964598484933, -17.32638467585863 ], [ 34.897890431100279, -17.32625651231832 ], [ 34.897823348962419, -17.326124796139013 ], [ 34.897763535928661, -17.325989888353835 ], [ 34.897711155930615, -17.325852158743412 ], [ 34.897666352524929, -17.325711984822245 ], [ 34.897629248499918, -17.325569750803872 ], [ 34.897599945539312, -17.325425846547741 ], [ 34.897578523943601, -17.325280666490528 ], [ 34.897565743794004, -17.325142207305205 ], [ 34.900551100160158, -17.32491517010353 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900551100160158, -17.32491517010353 ], [ 34.900331858463275, -17.322163720229909 ], [ 34.900446486600295, -17.322159746280438 ], [ 34.900599125593352, -17.322162133497788 ], [ 34.900751425327122, -17.322172190362547 ], [ 34.900902968377679, -17.322189889308945 ], [ 34.901053339395013, -17.322215181825705 ], [ 34.901202126241159, -17.322247998589095 ], [ 34.901348921119656, -17.322288249652903 ], [ 34.901493321693145, -17.3223358246949 ], [ 34.901634932185885, -17.322390593319241 ], [ 34.901773364468404, -17.322452405413809 ], [ 34.901908239121205, -17.322521091561601 ], [ 34.902039186474497, -17.322596463505029 ], [ 34.902165847621376, -17.322678314661896 ], [ 34.902287875401406, -17.322766420691451 ], [ 34.902404935352081, -17.322860540109318 ], [ 34.90251670662547, -17.322960414949193 ], [ 34.902622882867597, -17.323065771469913 ], [ 34.902723173058085, -17.323176320905603 ], [ 34.90281730230781, -17.323291760257099 ], [ 34.902905012612401, -17.323411773122313 ], [ 34.902986063559332, -17.323536030563393 ], [ 34.903060232987073, -17.323664192008231 ], [ 34.903127317593992, -17.323795906183808 ], [ 34.903187133495692, -17.323930812078967 ], [ 34.903239516729194, -17.324068539933798 ], [ 34.90328432370238, -17.324208712253018 ], [ 34.903321431587827, -17.324350944840624 ], [ 34.903350738659526, -17.32449484785289 ], [ 34.903372164571941, -17.324640026866742 ], [ 34.90337772102832, -17.324700204781678 ], [ 34.900551100160158, -17.32491517010353 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "3.3", "pivot_quadrant": "3.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900776626466843, -17.327745490872061 ], [ 34.900551100160158, -17.32491517010353 ], [ 34.90337772102832, -17.324700204781678 ], [ 34.903385650580439, -17.324786083960905 ], [ 34.903391159702402, -17.324932618806443 ], [ 34.903388676818878, -17.325079229764025 ], [ 34.903378208716227, -17.325225514984815 ], [ 34.903359784067653, -17.325371073511793 ], [ 34.903333453354918, -17.325515506378824 ], [ 34.903299288730132, -17.325658417704162 ], [ 34.903257383818179, -17.325799415775553 ], [ 34.903207853460337, -17.325938114123943 ], [ 34.903150833399678, -17.326074132582772 ], [ 34.903086479909113, -17.326207098330002 ], [ 34.903014969363383, -17.326336646910139 ], [ 34.902936497755626, -17.326462423233099 ], [ 34.902851280160384, -17.326584082547722 ], [ 34.902759550144168, -17.326701291386676 ], [ 34.902661559125448, -17.326813728480538 ], [ 34.902557575685506, -17.326921085638585 ], [ 34.902447884832448, -17.327023068593451 ], [ 34.902332787219926, -17.327119397807941 ], [ 34.902212598323182, -17.327209809241211 ], [ 34.902087647574284, -17.327294055072645 ], [ 34.901958277459215, -17.327371904381195 ], [ 34.901824842578996, -17.327443143778424 ], [ 34.901687708677741, -17.327507577993487 ], [ 34.901547251640118, -17.327565030408447 ], [ 34.90140385646086, -17.327615343542455 ], [ 34.901257916189486, -17.327658379483513 ], [ 34.901109830852782, -17.327694020266488 ], [ 34.900960006358247, -17.327722168196619 ], [ 34.900808853381278, -17.327742746117259 ], [ 34.900776626466843, -17.327745490872061 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.886782334569538, -17.326739205117487 ], [ 34.887703979851366, -17.329372879634846 ], [ 34.8876643191578, -17.329386792202165 ], [ 34.887518373215272, -17.329429818514686 ], [ 34.887370282716603, -17.329465449470245 ], [ 34.88722045358341, -17.329493587401011 ], [ 34.887069296503846, -17.329514155177758 ], [ 34.886917225806691, -17.329527096421376 ], [ 34.886764658325532, -17.329532375657408 ], [ 34.886612012256101, -17.329529978413341 ], [ 34.886459706009731, -17.329519911258302 ], [ 34.886308157066374, -17.329502201785065 ], [ 34.886157780830047, -17.329476898534416 ], [ 34.886008989490165, -17.32944407086211 ], [ 34.885862190891373, -17.32940380874879 ], [ 34.885717787415615, -17.329356222553258 ], [ 34.88557617487897, -17.329301442710033 ], [ 34.885437741446637, -17.32923961937173 ], [ 34.885302866568736, -17.329170921997534 ], [ 34.885171919940205, -17.32909553888852 ], [ 34.885045260487331, -17.329013676671618 ], [ 34.884923235383837, -17.328925559733097 ], [ 34.884806179099137, -17.328831429603483 ], [ 34.884694412481636, -17.328731544295415 ], [ 34.88458824187915, -17.328626177596401 ], [ 34.884487958299232, -17.328515618318296 ], [ 34.884393836611494, -17.328400169505525 ], [ 34.884306134794222, -17.328280147604413 ], [ 34.884225093227393, -17.328155881595727 ], [ 34.884150934033698, -17.328027712092847 ], [ 34.884083860469936, -17.327895990408074 ], [ 34.884024056369917, -17.327761077589614 ], [ 34.883971685640724, -17.327623343431874 ], [ 34.883964047061163, -17.327599439232444 ], [ 34.886782334569538, -17.326739205117487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.886782334569538, -17.326739205117487 ], [ 34.885846577829994, -17.324065205990067 ], [ 34.885953641947083, -17.324033642826574 ], [ 34.886101728582837, -17.323998013298716 ], [ 34.886251553602811, -17.323969876608579 ], [ 34.886402706363931, -17.323949309871807 ], [ 34.886554772584716, -17.32393636945611 ], [ 34.886707335480622, -17.323931090826889 ], [ 34.88685997690618, -17.323933488449978 ], [ 34.887012278500904, -17.323943555752123 ], [ 34.887163822835845, -17.323961265138948 ], [ 34.887314194557419, -17.323986568070588 ], [ 34.887462981525729, -17.324019395194775 ], [ 34.887609775944007, -17.324059656536921 ], [ 34.887754175476097, -17.324107241746617 ], [ 34.887895784349141, -17.324162020400173 ], [ 34.888034214438093, -17.324223842358005 ], [ 34.888169086329441, -17.324292538176074 ], [ 34.88830003036098, -17.324367919570307 ], [ 34.888426687634862, -17.324449779932586 ], [ 34.888548711001285, -17.324537894896967 ], [ 34.888665766009801, -17.324632022954553 ], [ 34.888777531826008, -17.324731906115399 ], [ 34.888883702110896, -17.324837270615532 ], [ 34.888983985860385, -17.324947827667181 ], [ 34.88907810820298, -17.325063274250319 ], [ 34.889165811153212, -17.325183293943041 ], [ 34.889246854318749, -17.325307557788776 ], [ 34.889321015559332, -17.325435725197845 ], [ 34.889388091595755, -17.325567444880889 ], [ 34.889447898567113, -17.325702355811647 ], [ 34.88950027253486, -17.325840088216371 ], [ 34.889520512970037, -17.325903422939145 ], [ 34.886782334569538, -17.326739205117487 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.1", "pivot_quadrant": "4.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887703979851366, -17.329372879634846 ], [ 34.886782334569538, -17.326739205117487 ], [ 34.889520512970037, -17.325903422939145 ], [ 34.889545069932325, -17.325980264587329 ], [ 34.889582167958245, -17.326122500717403 ], [ 34.889611464913656, -17.326266406753103 ], [ 34.889632880480761, -17.326411588263088 ], [ 34.889646355943256, -17.326557647319234 ], [ 34.889651854347427, -17.326704183587182 ], [ 34.889649360603691, -17.326850795423734 ], [ 34.889638881528178, -17.326997080977577 ], [ 34.889620445824171, -17.327142639290791 ], [ 34.889594104003734, -17.327287071397805 ], [ 34.889559928249412, -17.327429981418941 ], [ 34.889518012216612, -17.327570977645536 ], [ 34.889468470777103, -17.327709673613544 ], [ 34.889411439704311, -17.32784568916291 ], [ 34.889347075301409, -17.327978651479597 ], [ 34.889275553972986, -17.328108196117469 ], [ 34.889197071741769, -17.328233967997264 ], [ 34.88911184371144, -17.328355622379977 ], [ 34.889020103477137, -17.32847282581178 ], [ 34.888922102485324, -17.328585257038089 ], [ 34.888818109344669, -17.328692607884239 ], [ 34.888708409089844, -17.328794584100173 ], [ 34.888593302400324, -17.328890906167157 ], [ 34.888473104776217, -17.328981310063959 ], [ 34.888348145673561, -17.329065547990599 ], [ 34.888218767601209, -17.329143389047712 ], [ 34.888085325182047, -17.329214619869479 ], [ 34.887948184180871, -17.329279045208576 ], [ 34.887807720501797, -17.329336488471384 ], [ 34.887703979851366, -17.329372879634846 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894318941931957, -17.326404205007993 ], [ 34.892592473294087, -17.324940604483569 ], [ 34.89423852225147, -17.323363284353789 ], [ 34.894279290997311, -17.323403741786901 ], [ 34.894359843150291, -17.323492541716824 ], [ 34.894435446447254, -17.323585269172604 ], [ 34.894505893663094, -17.323681670000639 ], [ 34.894570991703901, -17.323781479978805 ], [ 34.894630562136221, -17.323884425540623 ], [ 34.894684441676247, -17.32399022452503 ], [ 34.894732482637338, -17.32409858694966 ], [ 34.894774553334969, -17.324209215805645 ], [ 34.8948105384477, -17.324321807871623 ], [ 34.894840339333385, -17.324436054544822 ], [ 34.894863874299624, -17.324551642686835 ], [ 34.894881078827837, -17.324668255481892 ], [ 34.894891905750164, -17.324785573305192 ], [ 34.89489632537888, -17.32490327459891 ], [ 34.894894325587956, -17.325021036753622 ], [ 34.894885911846373, -17.325138536992469 ], [ 34.894871107203294, -17.325255453255821 ], [ 34.894849952224995, -17.325371465084146 ], [ 34.894822504883827, -17.325486254496205 ], [ 34.894788840399457, -17.32559950686079 ], [ 34.894749051032846, -17.325710911758964 ], [ 34.894703245833377, -17.325820163835068 ], [ 34.894651550340264, -17.325926963633588 ], [ 34.894594106238337, -17.326031018420061 ], [ 34.89453107096999, -17.326132042983406 ], [ 34.894462617303638, -17.326229760417807 ], [ 34.894388932860224, -17.326323902881626 ], [ 34.894318941931957, -17.326404205007993 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.890807409243124, -17.32342733014784 ], [ 34.892592473294087, -17.324940604483569 ], [ 34.890923514244896, -17.32653987812137 ], [ 34.890914484047336, -17.32653180828056 ], [ 34.890829203620619, -17.3264471778465 ], [ 34.890748651575883, -17.326358376480158 ], [ 34.890673048700258, -17.326265647585799 ], [ 34.890602602214209, -17.326169245332796 ], [ 34.890537505203675, -17.326069433958875 ], [ 34.890477936090804, -17.325966487045811 ], [ 34.890424058144973, -17.325860686769481 ], [ 34.890376019035322, -17.325752323126384 ], [ 34.890333950426125, -17.325641693138767 ], [ 34.890297967615908, -17.325529100040367 ], [ 34.890268169221613, -17.32541485244527 ], [ 34.890244636908328, -17.325299263501982 ], [ 34.890227435165592, -17.325182650035078 ], [ 34.890216611130739, -17.325065331676697 ], [ 34.890212194459821, -17.324947629990511 ], [ 34.890214197246515, -17.324829867590271 ], [ 34.890222613988975, -17.324712367255533 ], [ 34.890237421605185, -17.324595451046935 ], [ 34.890258579496297, -17.324479439423452 ], [ 34.890286029658014, -17.324364650364053 ], [ 34.890319696839796, -17.324251398496109 ], [ 34.890359488751137, -17.324139994233082 ], [ 34.890405296314732, -17.324030742923696 ], [ 34.890456993965522, -17.323923944015053 ], [ 34.890514439994988, -17.323819890231881 ], [ 34.890577476939619, -17.32371886677425 ], [ 34.890645932012674, -17.323621150535875 ], [ 34.89071961757778, -17.323527009345277 ], [ 34.890798331663291, -17.323436701231689 ], [ 34.890807409243124, -17.32342733014784 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.2", "pivot_quadrant": "4.2B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892592473294087, -17.324940604483569 ], [ 34.894318941931957, -17.326404205007993 ], [ 34.894310219599099, -17.326414212331692 ], [ 34.894226693264422, -17.326500441230607 ], [ 34.89413858279395, -17.326582353225231 ], [ 34.89404612969151, -17.32665972379467 ], [ 34.893949587365086, -17.326732340865671 ], [ 34.893849220432202, -17.326800005393974 ], [ 34.893745303994642, -17.32686253190996 ], [ 34.893638122884369, -17.326919749027052 ], [ 34.893527970882786, -17.326971499911568 ], [ 34.893415149915398, -17.327017642712615 ], [ 34.893299969224287, -17.327058050950988 ], [ 34.893182744520246, -17.327092613865844 ], [ 34.893063797117513, -17.327121236718394 ], [ 34.892943453052915, -17.327143841051626 ], [ 34.892822042192059, -17.327160364905325 ], [ 34.892699897325102, -17.327170762986 ], [ 34.892577353254502, -17.327175006791023 ], [ 34.892454745877195, -17.327173084686827 ], [ 34.892332411263794, -17.327165001940749 ], [ 34.892210684737286, -17.327150780706638 ], [ 34.892089899953852, -17.327130459964124 ], [ 34.891970387988138, -17.32710409541183 ], [ 34.89185247642574, -17.327071759314567 ], [ 34.891736488465099, -17.327033540305397 ], [ 34.89162274203165, -17.32698954314257 ], [ 34.891511548906152, -17.326939888422402 ], [ 34.891403213870092, -17.326884712248685 ], [ 34.891298033870221, -17.326824165859591 ], [ 34.891196297204459, -17.326758415213135 ], [ 34.891098282731733, -17.326687640532139 ], [ 34.891004259107483, -17.326612035810371 ], [ 34.890923514244896, -17.32653987812137 ], [ 34.892592473294087, -17.324940604483569 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.901510659033576, -17.318761975282452 ], [ 34.90279052743562, -17.320898850353373 ], [ 34.902695969314003, -17.320949335742025 ], [ 34.902573880267774, -17.32100670306102 ], [ 34.90244883266864, -17.321057854335081 ], [ 34.902321169272682, -17.321102649355964 ], [ 34.902191240006921, -17.321140965337896 ], [ 34.902059401010106, -17.321172697254248 ], [ 34.901926013656272, -17.321197758125358 ], [ 34.901791443564306, -17.321216079257098 ], [ 34.90165605959551, -17.32122761042908 ], [ 34.901520232842493, -17.321232320032479 ], [ 34.901384335611887, -17.321230195156613 ], [ 34.901248740403666, -17.321221241624368 ], [ 34.901113818890003, -17.321205483976261 ], [ 34.900979940896406, -17.321182965403178 ], [ 34.900847473387834, -17.321153747627999 ], [ 34.900716779462755, -17.321117910736373 ], [ 34.900588217357772, -17.321075552957247 ], [ 34.900462139465517, -17.321026790393535 ], [ 34.900338891368634, -17.320971756703898 ], [ 34.900218810892511, -17.320910602736351 ], [ 34.900102227179111, -17.32084349611473 ], [ 34.899989459784749, -17.320770620779172 ], [ 34.899880817804124, -17.320692176481966 ], [ 34.899776599023014, -17.320608378239882 ], [ 34.899677089102028, -17.320519455744826 ], [ 34.899582560793547, -17.320425652734166 ], [ 34.899493273194146, -17.320327226322597 ], [ 34.89940947103441, -17.32022444629732 ], [ 34.899331384008093, -17.320117594378495 ], [ 34.899259226142632, -17.320006963446986 ], [ 34.89921991385566, -17.319939028684551 ], [ 34.901510659033576, -17.318761975282452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896432140987109, -17.321371469783127 ], [ 34.89747695456991, -17.323348411891939 ], [ 34.897469679008267, -17.323352296088142 ], [ 34.897359530326881, -17.323404048785928 ], [ 34.897246712631812, -17.32345019345582 ], [ 34.897131535156085, -17.323490603613518 ], [ 34.897014313601751, -17.323525168492896 ], [ 34.896895369274397, -17.323553793349777 ], [ 34.896775028202391, -17.323576399721649 ], [ 34.896653620243129, -17.323592925642721 ], [ 34.896531478178844, -17.323603325813824 ], [ 34.896408936804313, -17.323607571726608 ], [ 34.896286332009041, -17.323605651741715 ], [ 34.896163999856569, -17.323597571120658 ], [ 34.89604227566317, -17.323583352011493 ], [ 34.895921493078589, -17.323563033388012 ], [ 34.895801983171467, -17.32353667094301 ], [ 34.895684073521728, -17.323504336935521 ], [ 34.895568087322616, -17.32346611999289 ], [ 34.895454342494695, -17.323422124867694 ], [ 34.895343150814341, -17.323372472150655 ], [ 34.895234817059112, -17.32331729794009 ], [ 34.895129638172165, -17.323256753468765 ], [ 34.895027902448454, -17.323191004689452 ], [ 34.894929888744272, -17.323120231819857 ], [ 34.894835865713006, -17.323044628848749 ], [ 34.894746091068598, -17.3229644030041 ], [ 34.894660810879273, -17.322879774185061 ], [ 34.894580258892958, -17.322790974359165 ], [ 34.894504655896569, -17.322698246926471 ], [ 34.894434209110955, -17.322601846052333 ], [ 34.894369111622865, -17.3225020359707 ], [ 34.894337657341168, -17.322447678138754 ], [ 34.896432140987109, -17.321371469783127 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.901510659033576, -17.318761975282452 ], [ 34.900201998898332, -17.316577029381111 ], [ 34.900293113953509, -17.316528382885895 ], [ 34.900415201043664, -17.316471017154804 ], [ 34.900540246370653, -17.316419867378574 ], [ 34.900667907203236, -17.316375073749036 ], [ 34.900797833642493, -17.316336759036712 ], [ 34.900929669580677, -17.316305028254352 ], [ 34.90106305367722, -17.316279968369155 ], [ 34.90119762034896, -17.316261648064486 ], [ 34.901333000772034, -17.316250117551629 ], [ 34.901468823892699, -17.316245408432209 ], [ 34.901604717444123, -17.316247533611602 ], [ 34.90174030896663, -17.316256487263608 ], [ 34.901875226828437, -17.316272244846392 ], [ 34.90200910124404, -17.316294763169765 ], [ 34.902141565287693, -17.316323980513619 ], [ 34.902272255898858, -17.316359816796982 ], [ 34.902400814877282, -17.31640217379762 ], [ 34.902526889864582, -17.316450935421123 ], [ 34.902650135309905, -17.31650596801914 ], [ 34.902770213416957, -17.316567120755611 ], [ 34.902886795069712, -17.316634226020188 ], [ 34.902999560734415, -17.316707099887594 ], [ 34.903108201335357, -17.316785542621652 ], [ 34.903212419101848, -17.316869339222688 ], [ 34.903311928384397, -17.316958260016797 ], [ 34.903406456437629, -17.317052061285217 ], [ 34.903495744167735, -17.317150485932377 ], [ 34.903579546842757, -17.317253264190409 ], [ 34.903657634763242, -17.317360114358475 ], [ 34.903729793891969, -17.317470743574912 ], [ 34.903795826440607, -17.317584848619777 ], [ 34.903797012928912, -17.317587178252715 ], [ 34.901510659033576, -17.318761975282452 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 239.0, "radius": 276, "pivot": "4.4", "pivot_quadrant": "4.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.90279052743562, -17.320898850353373 ], [ 34.901510659033576, -17.318761975282452 ], [ 34.903797012928912, -17.317587178252715 ], [ 34.903855551411873, -17.317702116745874 ], [ 34.903908805095746, -17.317822226535956 ], [ 34.903955441518242, -17.317944848783579 ], [ 34.90399533284166, -17.318069647395419 ], [ 34.904028369715036, -17.318196280312364 ], [ 34.904054461574034, -17.318324400447054 ], [ 34.904073536889292, -17.318453656635143 ], [ 34.904085543362676, -17.31858369459782 ], [ 34.904090448070683, -17.318714157912751 ], [ 34.90408823755498, -17.318844688991089 ], [ 34.904078917859259, -17.318974930057436 ], [ 34.904062514513072, -17.319104524130601 ], [ 34.904039072461806, -17.319233116001957 ], [ 34.904008655943819, -17.319360353209095 ], [ 34.90397134831445, -17.31948588700191 ], [ 34.903927251817677, -17.319609373298508 ], [ 34.903876487306093, -17.319730473628336 ], [ 34.903819193909769, -17.319848856059931 ], [ 34.903755528655026, -17.319964196110821 ], [ 34.903685666034164, -17.320076177636885 ], [ 34.903609797527295, -17.320184493698932 ], [ 34.903528131077636, -17.320288847404175 ], [ 34.903440890521551, -17.320388952719917 ], [ 34.903348314975204, -17.320484535257712 ], [ 34.903250658179061, -17.320575333025491 ], [ 34.903148187802621, -17.320661097145702 ], [ 34.903041184710538, -17.320741592537622 ], [ 34.902929942192998, -17.320816598561695 ], [ 34.902814765161672, -17.320885909624447 ], [ 34.90279052743562, -17.320898850353373 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.896432140987109, -17.321371469783127 ], [ 34.895357321246472, -17.319337751577674 ], [ 34.895412100380852, -17.319312014200012 ], [ 34.895524916225504, -17.319265870748787 ], [ 34.895640091613821, -17.319225461723033 ], [ 34.895757310866635, -17.319190897876435 ], [ 34.89587625270358, -17.319162273941881 ], [ 34.895996591123556, -17.319139668371751 ], [ 34.896117996298237, -17.319123143123075 ], [ 34.8962401354759, -17.319112743487636 ], [ 34.8963626738934, -17.319108497967935 ], [ 34.896485275693607, -17.31911041819901 ], [ 34.896607604845812, -17.319118498916652 ], [ 34.896729326066612, -17.319132717971751 ], [ 34.896850105738828, -17.319153036391111 ], [ 34.896969612825721, -17.31917939848416 ], [ 34.897087519778275, -17.319211731995729 ], [ 34.897203503432799, -17.31924994830392 ], [ 34.897317245896588, -17.319293942663073 ], [ 34.897428435419187, -17.319343594490885 ], [ 34.897536767246699, -17.319398767698779 ], [ 34.897641944457035, -17.319459311064964 ], [ 34.897743678773672, -17.319525058648797 ], [ 34.897841691355659, -17.319595830245646 ], [ 34.897935713561985, -17.3196714318807 ], [ 34.898025487687661, -17.319751656340614 ], [ 34.898110767670225, -17.319836283741424 ], [ 34.898191319763967, -17.319925082131114 ], [ 34.89826692318082, -17.320017808125392 ], [ 34.898337370695316, -17.320114207574626 ], [ 34.898402469212712, -17.320214016260511 ], [ 34.898462040298284, -17.32031696062009 ], [ 34.898466676679575, -17.320326064479389 ], [ 34.896432140987109, -17.321371469783127 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 195.0, "radius": 249, "pivot": "4.3", "pivot_quadrant": "4.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89747695456991, -17.323348411891939 ], [ 34.896432140987109, -17.321371469783127 ], [ 34.898466676679575, -17.320326064479389 ], [ 34.898515920666433, -17.320422758495592 ], [ 34.898563962628245, -17.320531119907688 ], [ 34.898606034496453, -17.320641747850299 ], [ 34.898642020946426, -17.320754339104575 ], [ 34.898671823332343, -17.320868585069945 ], [ 34.898695359957713, -17.320984172609954 ], [ 34.898712566299402, -17.321100784910492 ], [ 34.898723395184547, -17.321218102348105 ], [ 34.898727816920108, -17.321335803366054 ], [ 34.89872581937427, -17.32145356535565 ], [ 34.898717408009844, -17.321571065540464 ], [ 34.898702605869474, -17.321687981861071 ], [ 34.898681453512594, -17.321803993857738 ], [ 34.898654008904387, -17.321918783548817 ], [ 34.898620347257008, -17.322032036302279 ], [ 34.898580560823632, -17.322143441698167 ], [ 34.898534758645638, -17.322252694379447 ], [ 34.898483066253917, -17.322359494888957 ], [ 34.89842562532484, -17.322463550490273 ], [ 34.898362593292084, -17.322564575970105 ], [ 34.898294142915205, -17.322662294420091 ], [ 34.89822046180609, -17.322756437995842 ], [ 34.898141751914984, -17.322846748651152 ], [ 34.89805822897678, -17.322932978845273 ], [ 34.897970121919982, -17.323014892221561 ], [ 34.897877672239005, -17.323092264255322 ], [ 34.897781133332444, -17.323164882869285 ], [ 34.897680769808474, -17.323232549014975 ], [ 34.897576856759528, -17.323295077218333 ], [ 34.89747695456991, -17.323348411891939 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.895433867295488, -17.318895605322869 ], [ 34.893769553711472, -17.316586264213559 ], [ 34.896250865251233, -17.315043362242964 ], [ 34.896318457119754, -17.315146999772502 ], [ 34.896392618163802, -17.315275164603293 ], [ 34.896459694535324, -17.315406881910381 ], [ 34.896519502372527, -17.315541790673997 ], [ 34.896571877734488, -17.31567952112637 ], [ 34.896616677050702, -17.315819695765096 ], [ 34.896653777514736, -17.315961930387815 ], [ 34.896683077420903, -17.316105835145184 ], [ 34.896704496443341, -17.316251015609364 ], [ 34.896717975856284, -17.316397073855079 ], [ 34.896723478695229, -17.316543609550223 ], [ 34.896720989858451, -17.316690221053168 ], [ 34.896710516148602, -17.316836506513539 ], [ 34.896692086254312, -17.316982064973665 ], [ 34.896665750671708, -17.317126497467576 ], [ 34.896631581566275, -17.317269408114562 ], [ 34.896589672575168, -17.317410405204214 ], [ 34.89654013855089, -17.317549102270181 ], [ 34.896483115246532, -17.317685119149388 ], [ 34.896418758943973, -17.317818083024147 ], [ 34.89634724602562, -17.317947629444067 ], [ 34.896268772491148, -17.318073403325023 ], [ 34.896183553420386, -17.318195059922527 ], [ 34.896091822383909, -17.31831226577669 ], [ 34.895993830802993, -17.318424699626295 ], [ 34.89588984726047, -17.318532053289481 ], [ 34.895780156764722, -17.318634032508506 ], [ 34.895665059968458, -17.31873035775638 ], [ 34.895544872344658, -17.31882076500316 ], [ 34.895433867295488, -17.318895605322869 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.892115685045027, -17.314291416092694 ], [ 34.893769553711472, -17.316586264213559 ], [ 34.891356570129695, -17.318086679241528 ], [ 34.891297083615598, -17.317995466139099 ], [ 34.891222924615022, -17.317867299214686 ], [ 34.891155850712593, -17.317735579905825 ], [ 34.891096045743055, -17.317600669254201 ], [ 34.891043673615911, -17.31746293704829 ], [ 34.890998877866231, -17.317322760809684 ], [ 34.890961781261367, -17.317180524758289 ], [ 34.890932485464695, -17.317036618759101 ], [ 34.890911070757085, -17.31689143725356 ], [ 34.890897595817023, -17.316745378178336 ], [ 34.890892097560027, -17.316598841874647 ], [ 34.890894591037593, -17.316452229990769 ], [ 34.890905069396219, -17.316305944381273 ], [ 34.890923503896353, -17.316160386005446 ], [ 34.8909498439914, -17.316015953828344 ], [ 34.890984017466458, -17.315873043727201 ], [ 34.891025930636467, -17.315732047406435 ], [ 34.891075468603169, -17.315593351324001 ], [ 34.89113249557024, -17.315457335632171 ], [ 34.891196855215718, -17.315324373135638 ], [ 34.891268371120539, -17.315194828269686 ], [ 34.891346847252301, -17.315069056101418 ], [ 34.891432068502752, -17.314947401356562 ], [ 34.891523801277408, -17.314830197474695 ], [ 34.891621794135965, -17.314717765695455 ], [ 34.891725778481565, -17.314610414177974 ], [ 34.891835469297064, -17.314508437156523 ], [ 34.891950565926237, -17.314412114133994 ], [ 34.892070752897929, -17.314321709115958 ], [ 34.892115685045027, -17.314291416092694 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.5", "pivot_quadrant": "4.5B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893769553711472, -17.316586264213559 ], [ 34.895433867295488, -17.318895605322869 ], [ 34.895419923321938, -17.318905006439724 ], [ 34.895290555381528, -17.318982851157038 ], [ 34.895157123118501, -17.319054085779275 ], [ 34.895019992269809, -17.319118515048697 ], [ 34.894879538711734, -17.319175962360919 ], [ 34.894736147429491, -17.319226270249096 ], [ 34.894590211461896, -17.319269300815598 ], [ 34.894442130823954, -17.319304936110047 ], [ 34.894292311410268, -17.319333078452726 ], [ 34.894141163882288, -17.319353650702329 ], [ 34.893989102542648, -17.319366596467447 ], [ 34.89383654419926, -17.31937188026124 ], [ 34.893683907022783, -17.319369487598706 ], [ 34.893531609400171, -17.319359425036396 ], [ 34.893380068787728, -17.319341720154483 ], [ 34.893229700566629, -17.319316421481151 ], [ 34.893080916904303, -17.31928359835964 ], [ 34.892934125624336, -17.319243340758049 ], [ 34.892789729088619, -17.319195759022865 ], [ 34.892648123094212, -17.319140983576336 ], [ 34.892509695788348, -17.319079164559028 ], [ 34.892374826604382, -17.319010471418256 ], [ 34.892243885221639, -17.318935092443517 ], [ 34.892117230552039, -17.318853234250383 ], [ 34.891995209756132, -17.318765121214074 ], [ 34.891878157291615, -17.318670994854429 ], [ 34.891766393996384, -17.318571113173732 ], [ 34.891660226209176, -17.31846574994956 ], [ 34.89155994492981, -17.318355193984225 ], [ 34.891465825021619, -17.318239748313058 ], [ 34.891378124458043, -17.318119729373805 ], [ 34.891356570129695, -17.318086679241528 ], [ 34.893769553711472, -17.316586264213559 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899440097999843, -17.313485312578923 ], [ 34.897682148973075, -17.31561157677756 ], [ 34.89767166812657, -17.315604008707908 ], [ 34.897554615295256, -17.315509885726271 ], [ 34.897442851360346, -17.315410007298045 ], [ 34.897336682662356, -17.315304647191873 ], [ 34.897236400203575, -17.315194094201519 ], [ 34.897142278850595, -17.31507865135416 ], [ 34.897054576580814, -17.314958635079801 ], [ 34.896973533775437, -17.314834374343764 ], [ 34.89689937256059, -17.314706209744962 ], [ 34.896832296198639, -17.314574492582278 ], [ 34.89677248853107, -17.314439583891517 ], [ 34.896720113474764, -17.314301853455778 ], [ 34.89667531457286, -17.314161678791795 ], [ 34.896638214601346, -17.314019444115193 ], [ 34.896608915232846, -17.313875539287164 ], [ 34.896587496758009, -17.313730358745971 ], [ 34.89657401786566, -17.313584300425656 ], [ 34.896568515482123, -17.313437764665327 ], [ 34.896571004670271, -17.313291153111834 ], [ 34.896581478588317, -17.313144867618806 ], [ 34.896599908508904, -17.312999309145241 ], [ 34.896626243897977, -17.312854876656449 ], [ 34.896660412553551, -17.312711966030534 ], [ 34.896702320803762, -17.312570968973372 ], [ 34.896751853763831, -17.312432271944935 ], [ 34.896808875651196, -17.312296255100076 ], [ 34.896873230157759, -17.312163291246673 ], [ 34.896944740878574, -17.312033744823729 ], [ 34.897023211795457, -17.31190797090262 ], [ 34.897108427814409, -17.311786314213879 ], [ 34.897200155355293, -17.311669108202434 ], [ 34.8972189524941, -17.311647539775638 ], [ 34.899440097999843, -17.313485312578923 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.899440097999843, -17.313485312578923 ], [ 34.90130835758503, -17.31122562620051 ], [ 34.901413639955251, -17.311310283537498 ], [ 34.901525403085479, -17.31141015982055 ], [ 34.901631571462033, -17.311515517729532 ], [ 34.901731854086115, -17.311626068494771 ], [ 34.901825976089349, -17.311741509113453 ], [ 34.901913679487194, -17.311861523179989 ], [ 34.901994723886119, -17.311985781753258 ], [ 34.902068887142498, -17.312113944258016 ], [ 34.90213596597161, -17.312245659418359 ], [ 34.902195776504954, -17.312380566220416 ], [ 34.902248154794236, -17.312518294901775 ], [ 34.902292957260912, -17.312658467964877 ], [ 34.902330061089906, -17.312800701211714 ], [ 34.902359364566351, -17.312944604796709 ], [ 34.902380787354609, -17.313089784295226 ], [ 34.902394270718574, -17.313235841784657 ], [ 34.902399777682902, -17.313382376934985 ], [ 34.902397293134591, -17.313528988106064 ], [ 34.902386823864568, -17.313675273448435 ], [ 34.902368398549257, -17.313820832004755 ], [ 34.902342067672237, -17.313965264808807 ], [ 34.902307903386109, -17.314108175979023 ], [ 34.902265999314849, -17.314249173803603 ], [ 34.902216470297404, -17.314387871814134 ], [ 34.902159452073207, -17.314523889844988 ], [ 34.902095100910188, -17.314656855075331 ], [ 34.902023593176651, -17.314786403051055 ], [ 34.901945124858074, -17.31491217868377 ], [ 34.901859911019962, -17.315033837224195 ], [ 34.901768185218579, -17.315151045207116 ], [ 34.90167019886082, -17.315263481365488 ], [ 34.901634167766389, -17.315300682952017 ], [ 34.899440097999843, -17.313485312578923 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "4.6", "pivot_quadrant": "4.6A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.897682148973075, -17.31561157677756 ], [ 34.899440097999843, -17.313485312578923 ], [ 34.901634167766389, -17.315300682952017 ], [ 34.901566220515207, -17.315370837511132 ], [ 34.901456535175853, -17.31547281937948 ], [ 34.901341443481343, -17.315569147436317 ], [ 34.901221260890679, -17.315659557643983 ], [ 34.901096316818645, -17.31574380218521 ], [ 34.900966953732905, -17.315821650142521 ], [ 34.900833526215209, -17.315892888131156 ], [ 34.900696399989521, -17.315957320884166 ], [ 34.900555950919419, -17.316014771787611 ], [ 34.900412563977817, -17.316065083364801 ], [ 34.900266632191638, -17.316108117707994 ], [ 34.900118555564397, -17.316143756856455 ], [ 34.899968739979705, -17.316171903119908 ], [ 34.899817596088525, -17.316192479346252 ], [ 34.899665538183491, -17.316205429133237 ], [ 34.899512983063111, -17.316210716982958 ], [ 34.899360348889211, -17.316208328399284 ], [ 34.8992080540405, -17.316198269927593 ], [ 34.899056515965661, -17.316180569136844 ], [ 34.898906150038954, -17.316155274543995 ], [ 34.898757368421464, -17.316122455481082 ], [ 34.898610578931248, -17.316082201905107 ], [ 34.898466183925223, -17.316034624151484 ], [ 34.898324579196277, -17.31597985263155 ], [ 34.898186152888186, -17.315918037475122 ], [ 34.898051284431546, -17.315849348118899 ], [ 34.897920343503721, -17.315773972842017 ], [ 34.897793689015366, -17.315692118249903 ], [ 34.897682148973075, -17.31561157677756 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.889644280205616, -17.310113123629545 ], [ 34.893567231271753, -17.309696371939275 ], [ 34.894135431768206, -17.313461353424515 ], [ 34.894022909687017, -17.31347666856341 ], [ 34.893816897561351, -17.313494207208084 ], [ 34.893610212128692, -17.313501365053114 ], [ 34.893403419933982, -17.313498122474773 ], [ 34.893197087815246, -17.313484488357865 ], [ 34.892991781349544, -17.313460500071429 ], [ 34.892788063302312, -17.313426223366324 ], [ 34.892586492084611, -17.313381752195014 ], [ 34.892387620222046, -17.313327208454009 ], [ 34.892191992840104, -17.313262741649709 ], [ 34.892000146169543, -17.313188528488556 ], [ 34.891812606076378, -17.313104772392641 ], [ 34.891629886620137, -17.313011702941967 ], [ 34.891452488644688, -17.312909575245161 ], [ 34.891280898405093, -17.31279866924006 ], [ 34.89111558623474, -17.312679288926272 ], [ 34.890957005255849, -17.312551761531832 ], [ 34.890805590137525, -17.312416436616065 ], [ 34.890661755904112, -17.312273685111339 ], [ 34.890525896797627, -17.312123898306147 ], [ 34.890398385197194, -17.311967486772534 ], [ 34.890279570598331, -17.311804879240409 ], [ 34.890169778655036, -17.311636521422365 ], [ 34.89006931028738, -17.311462874791772 ], [ 34.889978440856758, -17.311284415317768 ], [ 34.889897419411362, -17.311101632160437 ], [ 34.889826468003683, -17.310915026329962 ], [ 34.889765781082247, -17.310725109313132 ], [ 34.889715524958767, -17.310532401671345 ], [ 34.889675837352712, -17.310337431613661 ], [ 34.889646827014069, -17.310140733548774 ], [ 34.889644280205616, -17.310113123629545 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.897496240357995, -17.309278976679899 ], [ 34.893567231271753, -17.309696371939275 ], [ 34.893002323669023, -17.305953209660426 ], [ 34.893119668539669, -17.305937238579631 ], [ 34.893325672458758, -17.305919701457171 ], [ 34.893532349484737, -17.30591254472894 ], [ 34.893739133164758, -17.305915788006445 ], [ 34.893945456754139, -17.305929422397227 ], [ 34.894150754769228, -17.30595341052922 ], [ 34.894354464537166, -17.30598768665326 ], [ 34.894556027737657, -17.306032156823267 ], [ 34.894754891932848, -17.306086699153688 ], [ 34.89495051208133, -17.30615116415359 ], [ 34.895142352031577, -17.306225375136297 ], [ 34.895329885991188, -17.306309128703578 ], [ 34.895512599967851, -17.306402195303132 ], [ 34.895689993177726, -17.306504319857581 ], [ 34.895861579417975, -17.306615222463513 ], [ 34.896026888399007, -17.306734599158542 ], [ 34.896185467033547, -17.306862122754314 ], [ 34.896336880678206, -17.306997443733113 ], [ 34.896480714324767, -17.307140191205693 ], [ 34.896616573737617, -17.30728997392773 ], [ 34.896744086534312, -17.307446381371953 ], [ 34.89686290320622, -17.307608984853228 ], [ 34.89697269807661, -17.30777733870335 ], [ 34.897073170193366, -17.307950981492414 ], [ 34.897164044153996, -17.308129437293385 ], [ 34.897245070860698, -17.308312216986412 ], [ 34.897316028203313, -17.308498819599276 ], [ 34.897376721668323, -17.308688733680437 ], [ 34.897426984872283, -17.308881438700638 ], [ 34.897466680018177, -17.309076406479587 ], [ 34.897495698273403, -17.309273102633544 ], [ 34.897496240357995, -17.309278976679899 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.1", "pivot_quadrant": "5.1B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.893567231271753, -17.309696371939275 ], [ 34.889644280205616, -17.310113123629545 ], [ 34.889628573425647, -17.309942846620235 ], [ 34.889621126585517, -17.309744313228641 ], [ 34.889624506870462, -17.309545677544772 ], [ 34.889638704980335, -17.309347484018105 ], [ 34.889663681964102, -17.309150275884431 ], [ 34.88969936932687, -17.308954593676912 ], [ 34.889745669218065, -17.308760973744466 ], [ 34.889802454699968, -17.308569946781756 ], [ 34.889869570096032, -17.308382036374624 ], [ 34.889946831417923, -17.308197757564983 ], [ 34.890034026870126, -17.308017615439326 ], [ 34.890130917430803, -17.307842103744292 ], [ 34.890237237507151, -17.307671703533526 ], [ 34.890352695663665, -17.307506881849253 ], [ 34.890476975421151, -17.307348090442296 ], [ 34.890609736124361, -17.307195764533997 ], [ 34.890750613875788, -17.3070503216235 ], [ 34.890899222533278, -17.306912160343522 ], [ 34.891055154768431, -17.306781659367985 ], [ 34.891217983183068, -17.306659176374215 ], [ 34.891387261480766, -17.306545047062802 ], [ 34.891562525690006, -17.306439584237634 ], [ 34.891743295435781, -17.306343076948679 ], [ 34.891929075256186, -17.306255789699943 ], [ 34.892119355960247, -17.306177961724611 ], [ 34.892313616023394, -17.306109806329552 ], [ 34.892511323016663, -17.306051510310741 ], [ 34.892711935065812, -17.30600323344148 ], [ 34.892914902336223, -17.305965108034528 ], [ 34.893002323669023, -17.305953209660426 ], [ 34.893567231271753, -17.309696371939275 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.88655044353051, -17.30082027669599 ], [ 34.887065228066767, -17.304559537671949 ], [ 34.883138407553353, -17.304967747142655 ], [ 34.883124499512981, -17.304816903162319 ], [ 34.883117060422094, -17.30461836873225 ], [ 34.883120448196905, -17.304419732390357 ], [ 34.883134653516784, -17.304221538587896 ], [ 34.883159637410927, -17.304024330561418 ], [ 34.883195331365513, -17.303828648843769 ], [ 34.883241637511922, -17.303635029782509 ], [ 34.883298428895301, -17.303444004069913 ], [ 34.883365549822955, -17.303256095288376 ], [ 34.883442816291399, -17.30307181847537 ], [ 34.883530016491029, -17.302891678711884 ], [ 34.883626911387026, -17.302716169738098 ], [ 34.883733235374699, -17.30254577260019 ], [ 34.883848697007878, -17.302380954331959 ], [ 34.883972979797818, -17.302222166674863 ], [ 34.884105743080994, -17.302069844839973 ], [ 34.884246622952844, -17.301924406315258 ], [ 34.88439523326543, -17.301786249721427 ], [ 34.88455116668581, -17.301655753719565 ], [ 34.884713995812575, -17.301533275973377 ], [ 34.884883274347381, -17.301419152169071 ], [ 34.885058538318042, -17.301313695095438 ], [ 34.885239307350204, -17.301217193786709 ], [ 34.885425085983954, -17.301129912730506 ], [ 34.885615365031562, -17.301052091143053 ], [ 34.885809622973014, -17.30098394231371 ], [ 34.886007327385144, -17.300925653020485 ], [ 34.88620793640078, -17.30087738301825 ], [ 34.886410900193646, -17.30083926460097 ], [ 34.88655044353051, -17.30082027669599 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887585923201613, -17.308341731698718 ], [ 34.887065228066767, -17.304559537671949 ], [ 34.890991820206963, -17.304151351941599 ], [ 34.891009712544758, -17.30434532014915 ], [ 34.891017160039745, -17.304543853465603 ], [ 34.891013780776646, -17.304742489111405 ], [ 34.890999583982811, -17.304940682642922 ], [ 34.890974608535664, -17.305137890826575 ], [ 34.890938922856463, -17.305333573127797 ], [ 34.890892624723172, -17.305527193192621 ], [ 34.89083584100284, -17.305718220317804 ], [ 34.890768727304206, -17.305906130905438 ], [ 34.890691467551548, -17.306090409898285 ], [ 34.890604273480889, -17.306270552191478 ], [ 34.890507384059916, -17.306446064017113 ], [ 34.890401064833291, -17.306616464297758 ], [ 34.890285607195082, -17.306781285965204 ], [ 34.890161327590214, -17.306940077240721 ], [ 34.890028566647352, -17.307092402873621 ], [ 34.889887688245388, -17.307237845334313 ], [ 34.889739078516179, -17.307376005958961 ], [ 34.889583144786272, -17.307506506042298 ], [ 34.889420314460438, -17.307628987875948 ], [ 34.889251033850186, -17.307743115728897 ], [ 34.889075766950455, -17.307848576767977 ], [ 34.888894994167643, -17.307945081915541 ], [ 34.888709211002805, -17.3080323666419 ], [ 34.888518926693266, -17.308110191690613 ], [ 34.888324662816736, -17.308178343734379 ], [ 34.888126951861395, -17.308236635960007 ], [ 34.887926335766082, -17.308284908580482 ], [ 34.887723364434663, -17.308323029273154 ], [ 34.887585923201613, -17.308341731698718 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.3", "pivot_quadrant": "5.3D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.887065228066767, -17.304559537671949 ], [ 34.88655044353051, -17.30082027669599 ], [ 34.886615662485013, -17.300811402239216 ], [ 34.886821662068201, -17.300793872293969 ], [ 34.88702833434634, -17.300786722807359 ], [ 34.887235112879623, -17.30078997337106 ], [ 34.887441430937386, -17.300803615072628 ], [ 34.887646723051198, -17.300827610519995 ], [ 34.88785042656432, -17.30086189394396 ], [ 34.888051983173575, -17.300906371378414 ], [ 34.888250840459207, -17.300960920917966 ], [ 34.888446453398686, -17.301025393051869 ], [ 34.888638285860232, -17.301099611073905 ], [ 34.888825812071993, -17.301183371566594 ], [ 34.889008518062795, -17.301276444958631 ], [ 34.889185903070754, -17.301378576154015 ], [ 34.889357480915407, -17.301489485231148 ], [ 34.889522781330243, -17.301608868209907 ], [ 34.889681351251404, -17.301736397884714 ], [ 34.889832756059356, -17.301871724721188 ], [ 34.88997658077011, -17.302014477814012 ], [ 34.89011243117254, -17.302164265903457 ], [ 34.890239934908863, -17.302320678447551 ], [ 34.890358742495273, -17.302483286747144 ], [ 34.890468528279946, -17.302651645120829 ], [ 34.890568991335634, -17.3028252921263 ], [ 34.890659856284707, -17.303003751824949 ], [ 34.890740874054046, -17.303186535086216 ], [ 34.890811822557978, -17.303373140928109 ], [ 34.890872507307208, -17.303563057890219 ], [ 34.890922761942207, -17.303755765435376 ], [ 34.890962448689429, -17.303950735376358 ], [ 34.890991458739279, -17.304147433323465 ], [ 34.890991820206963, -17.304151351941599 ], [ 34.887065228066767, -17.304559537671949 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8969126991338, -17.302747852699646 ], [ 34.900876176680299, -17.302893796550027 ], [ 34.900862215681485, -17.303088843323266 ], [ 34.900837250927268, -17.303286051715396 ], [ 34.900801576024612, -17.303481734749649 ], [ 34.900755288721975, -17.303675356070045 ], [ 34.900698515856696, -17.303866384969915 ], [ 34.900631413007766, -17.30405429784653 ], [ 34.900554164069703, -17.304238579636362 ], [ 34.900466980748888, -17.30441872522692 ], [ 34.900370101983533, -17.304594240841258 ], [ 34.900263793289071, -17.304764645391586 ], [ 34.900148346030669, -17.30492947179798 ], [ 34.900024076624817, -17.305088268268765 ], [ 34.899891325672165, -17.305240599538983 ], [ 34.899750457024226, -17.305386048063617 ], [ 34.899601856786099, -17.305524215162226 ], [ 34.899445932258295, -17.305654722111793 ], [ 34.899283110820335, -17.305777211185095 ], [ 34.899113838759355, -17.305891346631288 ], [ 34.898938580046824, -17.305996815596405 ], [ 34.898757815066695, -17.306093328981046 ], [ 34.898572039298578, -17.30618062223294 ], [ 34.898381761959563, -17.306258456072264 ], [ 34.898187504608195, -17.30632661714764 ], [ 34.89798979971475, -17.306384918621077 ], [ 34.89778918920144, -17.306433200680189 ], [ 34.897586222956839, -17.306471330976475 ], [ 34.897381457328272, -17.306499204988068 ], [ 34.89717545359661, -17.306516746306354 ], [ 34.896968776437447, -17.306523906845566 ], [ 34.896848733623173, -17.306522026027363 ], [ 34.8969126991338, -17.302747852699646 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.8969126991338, -17.302747852699646 ], [ 34.892982579947684, -17.30260313717654 ], [ 34.892983172682968, -17.302568275889897 ], [ 34.892997367422488, -17.302370082399289 ], [ 34.893022340623894, -17.302172874159623 ], [ 34.893058023802681, -17.301977191704324 ], [ 34.89310431911975, -17.301783571383027 ], [ 34.893161099649916, -17.301592543891452 ], [ 34.893228209730253, -17.301404632816908 ], [ 34.89330546538698, -17.301220353203167 ], [ 34.893392654840142, -17.301040210138897 ], [ 34.8934895390843, -17.300864697373338 ], [ 34.893595852544017, -17.300694295963083 ], [ 34.893711303801894, -17.300529472953652 ], [ 34.893835576397656, -17.300370680099508 ], [ 34.893968329695682, -17.300218352625976 ], [ 34.894109199818764, -17.30007290803648 ], [ 34.894257800645626, -17.299934744968354 ], [ 34.894413724869359, -17.299804242100432 ], [ 34.894576545113729, -17.299681757115238 ], [ 34.894745815104677, -17.299567625718822 ], [ 34.894921070893432, -17.299462160720779 ], [ 34.89510183212807, -17.299365651177041 ], [ 34.895287603369994, -17.299278361597814 ], [ 34.895477875451739, -17.29920053122266 ], [ 34.895672126872348, -17.299132373365019 ], [ 34.895869825226519, -17.299074074827637 ], [ 34.896070428663677, -17.299025795390687 ], [ 34.896273387372787, -17.298987667373979 ], [ 34.896478145089084, -17.298959795274413 ], [ 34.89668414061839, -17.29894225547962 ], [ 34.896890809374973, -17.298935096058699 ], [ 34.8969772955911, -17.298936451464556 ], [ 34.8969126991338, -17.302747852699646 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 554.0, "radius": 420, "pivot": "5.2", "pivot_quadrant": "5.2D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.900876176680299, -17.302893796550027 ], [ 34.8969126991338, -17.302747852699646 ], [ 34.8969772955911, -17.298936451464556 ], [ 34.897097584928609, -17.298938336630535 ], [ 34.897303900556857, -17.298951968310067 ], [ 34.897509190797912, -17.298975953732672 ], [ 34.89771289300019, -17.299010227156604 ], [ 34.897914448864078, -17.299054694643154 ], [ 34.898113305971897, -17.299109234314148 ], [ 34.898308919301599, -17.299173696685894 ], [ 34.898500752720359, -17.299247905078936 ], [ 34.898688280453683, -17.299331656102137 ], [ 34.898870988526284, -17.299424720210141 ], [ 34.899048376170541, -17.299526842332384 ], [ 34.899219957198824, -17.299637742572131 ], [ 34.899385261335887, -17.299757116973481 ], [ 34.899543835507686, -17.299884638354321 ], [ 34.899695245083088, -17.300019957203023 ], [ 34.899839075065046, -17.300162702636175 ], [ 34.899974931227973, -17.300312483415023 ], [ 34.900102441198349, -17.30046888901763 ], [ 34.900221255475309, -17.300631490763884 ], [ 34.900331048388715, -17.300799842990351 ], [ 34.900431518991795, -17.300973484271562 ], [ 34.900522391886227, -17.301151938684619 ], [ 34.900603417977173, -17.301334717113466 ], [ 34.90067437515615, -17.301521318589351 ], [ 34.900735068910123, -17.301711231663859 ], [ 34.900785332854859, -17.301903935810486 ], [ 34.900825029191338, -17.302098902851345 ], [ 34.900854049083712, -17.302295598404701 ], [ 34.900872312957986, -17.302493483349586 ], [ 34.900879770720429, -17.302692015303364 ], [ 34.900876401895346, -17.302890650108349 ], [ 34.900876176680299, -17.302893796550027 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.894017157017068, -17.294410311809727 ], [ 34.89693731592709, -17.294573580994058 ], [ 34.896864188941137, -17.297331505303269 ], [ 34.896805931020118, -17.297330592199042 ], [ 34.896653651768069, -17.297320530228568 ], [ 34.896502129402165, -17.297302825932473 ], [ 34.896351779253607, -17.297277527837316 ], [ 34.896203013440193, -17.297244705284744 ], [ 34.896056239736616, -17.297204448241324 ], [ 34.89591186045655, -17.297156867051939 ], [ 34.895770271349726, -17.297102092137393 ], [ 34.895631860517078, -17.29704027363676 ], [ 34.895497007346798, -17.296971580995908 ], [ 34.895366081474315, -17.296896202502978 ], [ 34.895239441768993, -17.296814344772198 ], [ 34.8951174353504, -17.296726232177512 ], [ 34.895000396636796, -17.296632106237524 ], [ 34.894888646428399, -17.296532224953381 ], [ 34.894782491028053, -17.296426862101541 ], [ 34.894682221401673, -17.296316306483291 ], [ 34.894588112380617, -17.296200861132984 ], [ 34.894500421908518, -17.296080842487484 ], [ 34.894419390334207, -17.295956579518617 ], [ 34.894345239753093, -17.295828412831394 ], [ 34.894278173398355, -17.295696693730406 ], [ 34.894218375084108, -17.295561783256755 ], [ 34.894166008701575, -17.295424051198424 ], [ 34.89412121777012, -17.295283875076617 ], [ 34.89408412504396, -17.295141639110881 ], [ 34.894054832175833, -17.294997733166007 ], [ 34.894033419438607, -17.294852551683256 ], [ 34.894019945505391, -17.294706492599275 ], [ 34.894014447288981, -17.294559956255252 ], [ 34.894016939840789, -17.294413344299628 ], [ 34.894017157017068, -17.294410311809727 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89693731592709, -17.294573580994058 ], [ 34.89983659573803, -17.294735682805793 ], [ 34.899832163531997, -17.294797598243601 ], [ 34.899822899654588, -17.294870775272294 ], [ 34.899813736479395, -17.294943156836158 ], [ 34.899787404689512, -17.295087589492788 ], [ 34.899753240317445, -17.295230500332377 ], [ 34.899711336987437, -17.29537149764397 ], [ 34.89966180953644, -17.29551019496061 ], [ 34.899604793699602, -17.295646212118569 ], [ 34.89954044573831, -17.295779176299387 ], [ 34.89946894201217, -17.295908723051863 ], [ 34.899390478495619, -17.296034497290957 ], [ 34.899305270241072, -17.296156154271213 ], [ 34.899213550789469, -17.29627336053171 ], [ 34.899115571530331, -17.296385794810135 ], [ 34.899011601012702, -17.296493148923457 ], [ 34.898901924209291, -17.296595128612708 ], [ 34.898786841735244, -17.296691454349638 ], [ 34.898666669024301, -17.296781862102957 ], [ 34.898541735464178, -17.296866104062158 ], [ 34.898412383493714, -17.296943949316809 ], [ 34.898278967664204, -17.297015184489627 ], [ 34.898141853667532, -17.297079614321344 ], [ 34.898001417333766, -17.297137062206048 ], [ 34.89785804360087, -17.297187370675346 ], [ 34.897712125459591, -17.297230401829999 ], [ 34.897564062875993, -17.297266037718053 ], [ 34.897414261695189, -17.297294180658142 ], [ 34.89726313252865, -17.297314753507322 ], [ 34.897111089628602, -17.29732769987255 ], [ 34.896958549752426, -17.297332984265342 ], [ 34.896864188941137, -17.297331505303269 ], [ 34.89693731592709, -17.294573580994058 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89693731592709, -17.294573580994058 ], [ 34.894017157017068, -17.294410311809727 ], [ 34.894027416309868, -17.294267058587142 ], [ 34.894045847961912, -17.294121500077392 ], [ 34.894072184258114, -17.293977067735781 ], [ 34.894089624499351, -17.293904124152515 ], [ 34.894106352994037, -17.293834157440013 ], [ 34.894148260497595, -17.293693160895057 ], [ 34.894197791886107, -17.293554464559477 ], [ 34.89425481138133, -17.293418448586269 ], [ 34.894319162681754, -17.293285485780885 ], [ 34.894390669391221, -17.293155940579478 ], [ 34.894469135502568, -17.293030168050077 ], [ 34.894554345934992, -17.292908512919421 ], [ 34.894646067123652, -17.292791308628154 ], [ 34.894744047660041, -17.292678876417035 ], [ 34.894848018981065, -17.292571524446419 ], [ 34.894957696105273, -17.292469546951811 ], [ 34.895072778413969, -17.292373223437412 ], [ 34.89519295047522, -17.292282817910166 ], [ 34.895317882908451, -17.292198578156203 ], [ 34.89544723328715, -17.292120735061754 ], [ 34.89558064707748, -17.292049501980475 ], [ 34.895717758609869, -17.291985074148698 ], [ 34.89585819208127, -17.291927628150439 ], [ 34.896001562585077, -17.291877321433407 ], [ 34.89614747716594, -17.291834291877638 ], [ 34.896295535896762, -17.291798657417591 ], [ 34.896445332974679, -17.29177051571898 ], [ 34.896596457833176, -17.291749943911135 ], [ 34.896748496267172, -17.291736998375693 ], [ 34.896901031568262, -17.291731714592061 ], [ 34.897012622272264, -17.291733463938773 ], [ 34.896942313597627, -17.29438509794787 ], [ 34.89693731592709, -17.294573580994058 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 301.0, "radius": 310, "pivot": "5.4", "pivot_quadrant": "5.4D" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.89983659573803, -17.294735682805793 ], [ 34.89693731592709, -17.294573580994058 ], [ 34.896942313597627, -17.29438509794787 ], [ 34.897012622272264, -17.291733463938773 ], [ 34.897053645666574, -17.291734107040188 ], [ 34.897205920276505, -17.291744169161014 ], [ 34.897357438042967, -17.29176187337432 ], [ 34.897507783685214, -17.291787171154436 ], [ 34.89765654513478, -17.291819993163191 ], [ 34.897803314664799, -17.291860249439978 ], [ 34.897947690007349, -17.291907829648292 ], [ 34.898089275455796, -17.291962603378103 ], [ 34.89822768294929, -17.292024420503296 ], [ 34.898362533136257, -17.292093111593083 ], [ 34.898493456413945, -17.292168488376308 ], [ 34.898620093941389, -17.2922503442575 ], [ 34.898742098622918, -17.292338454882941 ], [ 34.898859136059286, -17.292432578755633 ], [ 34.898970885464273, -17.292532457897078 ], [ 34.899077040543823, -17.292637818554272 ], [ 34.899177310335574, -17.29274837194999 ], [ 34.899271420006308, -17.29286381507422 ], [ 34.8993591116053, -17.292983831514487 ], [ 34.899440144771376, -17.293108092323138 ], [ 34.899514297391676, -17.293236256918828 ], [ 34.899581366210683, -17.293367974019876 ], [ 34.899641167387308, -17.29350288260709 ], [ 34.899693536998917, -17.293640612913151 ], [ 34.899738331490795, -17.293780787436059 ], [ 34.899775428069709, -17.293923021973789 ], [ 34.899804725040731, -17.294066926677193 ], [ 34.899826142086027, -17.294212107118611 ], [ 34.899839620485281, -17.294358165372817 ], [ 34.899845123276762, -17.29450470110768 ], [ 34.899842635358958, -17.294651312681466 ], [ 34.89983659573803, -17.294735682805793 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 32.0, "radius": null, "pivot": "DL1.3", "pivot_quadrant": "DL1.3" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.947451385514611, -17.321753599029073 ], [ 34.947298927757849, -17.321663500672134 ], [ 34.947001852567226, -17.32100637178991 ], [ 34.947092750341952, -17.318710743453458 ], [ 34.94828268484742, -17.317606307231124 ], [ 34.948861125232021, -17.317077753261884 ], [ 34.949299087237506, -17.316123196719229 ], [ 34.950715487823011, -17.316226521400374 ], [ 34.951786380891292, -17.316304641732966 ], [ 34.953480384874766, -17.317416974640771 ], [ 34.953265535589061, -17.317724640001025 ], [ 34.953133320644007, -17.318048082516636 ], [ 34.953034159435212, -17.318442523838343 ], [ 34.952968051962692, -17.318884297113428 ], [ 34.952968051962692, -17.319373402000465 ], [ 34.953092003473678, -17.319909838121443 ], [ 34.952794519847309, -17.321448138900415 ], [ 34.952108654819853, -17.321661133377713 ], [ 34.950066988602522, -17.321701668718116 ], [ 34.947451385514611, -17.321753599029073 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18C" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961301964672387, -17.313838203379714 ], [ 34.963291039141012, -17.311973548628245 ], [ 34.963318548862773, -17.312000830743248 ], [ 34.963414658522524, -17.312106712348005 ], [ 34.963504867652226, -17.312217280413027 ], [ 34.963588928992536, -17.312332231887332 ], [ 34.963666612132982, -17.31245125170528 ], [ 34.963737704143533, -17.312574013649993 ], [ 34.963802010158297, -17.312700181247447 ], [ 34.963859353909704, -17.312829408688614 ], [ 34.963909578211776, -17.312961341777211 ], [ 34.963952545391066, -17.313095618900494 ], [ 34.963988137664089, -17.313231872020292 ], [ 34.964016257460422, -17.3133697276817 ], [ 34.964036827690187, -17.313508808036687 ], [ 34.964049791955574, -17.313648731879656 ], [ 34.964055114705573, -17.313789115692281 ], [ 34.964052781333649, -17.313929574694654 ], [ 34.964042798217903, -17.314069723899909 ], [ 34.964025192703858, -17.314209179169463 ], [ 34.964000013029583, -17.314347558265844 ], [ 34.963967328193803, -17.314484481900458 ], [ 34.963927227766852, -17.314619574773129 ], [ 34.963879821645449, -17.314752466600854 ], [ 34.96382523975155, -17.314882793132711 ], [ 34.963763631676478, -17.315010197148315 ], [ 34.963695166271002, -17.315134329436955 ], [ 34.963620031182742, -17.315254849754851 ], [ 34.963538432341863, -17.315371427757743 ], [ 34.963450593396857, -17.315483743906491 ], [ 34.963356755101515, -17.3155914903429 ], [ 34.96325717465519, -17.315694371733709 ], [ 34.963152124997862, -17.315792106080078 ], [ 34.963115666188799, -17.315822640664031 ], [ 34.961301964672387, -17.313838203379714 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.961301964672387, -17.313838203379714 ], [ 34.959294104555354, -17.315720468707916 ], [ 34.959205111423216, -17.315632210383061 ], [ 34.959109001898497, -17.315526326733945 ], [ 34.959018793349316, -17.315415756619789 ], [ 34.95893473302857, -17.315300803113992 ], [ 34.958857051335606, -17.315181781304474 ], [ 34.958785961184603, -17.315059017429945 ], [ 34.958721657421044, -17.314932847985528 ], [ 34.958664316287852, -17.314803618800539 ], [ 34.958614094942313, -17.314671684090325 ], [ 34.958571131025515, -17.314537405485428 ], [ 34.958535542285148, -17.314401151040233 ], [ 34.958507426252964, -17.314263294224176 ], [ 34.958486859977597, -17.31412421289793 ], [ 34.958473899813526, -17.313984288277727 ], [ 34.958468581266821, -17.313843903890437 ], [ 34.958470918897959, -17.313703444522226 ], [ 34.958480906282176, -17.313563295164005 ], [ 34.958498516027234, -17.31342383995602 ], [ 34.95852369984862, -17.313285461135049 ], [ 34.958556388702249, -17.313148537986695 ], [ 34.958596492973705, -17.31301344580578 ], [ 34.958643902724212, -17.312880554867768 ], [ 34.958698487991995, -17.31275022941379 ], [ 34.958760099148805, -17.312622826652447 ], [ 34.958828567310086, -17.312498695780704 ], [ 34.958903704798047, -17.312378177026815 ], [ 34.958985305656192, -17.3122616007179 ], [ 34.959073146213981, -17.312149286374552 ], [ 34.959166985699902, -17.31204154183515 ], [ 34.95926656690159, -17.311938662412228 ], [ 34.959371616870783, -17.311840930083029 ], [ 34.959431043918748, -17.311791160431401 ], [ 34.961301964672387, -17.313838203379714 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 277.0, "radius": 297, "pivot": "1.18", "pivot_quadrant": "1.18B" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.963291039141012, -17.311973548628245 ], [ 34.961301964672387, -17.313838203379714 ], [ 34.959431043918748, -17.311791160431401 ], [ 34.959481847671512, -17.311748612716794 ], [ 34.95959695716941, -17.311661963340608 ], [ 34.959716629859727, -17.311581219445991 ], [ 34.959840537732092, -17.311506602337992 ], [ 34.95996834116962, -17.311438316528729 ], [ 34.960099689879613, -17.311376549176956 ], [ 34.960234223853597, -17.311321469575088 ], [ 34.960371574354085, -17.311273228685337 ], [ 34.960511364925047, -17.311231958725969 ], [ 34.960653212423622, -17.311197772808992 ], [ 34.9607967280702, -17.31117076463017 ], [ 34.960941518513806, -17.311151008212327 ], [ 34.961087186910177, -17.311138557702407 ], [ 34.961233334009165, -17.311133447223234 ], [ 34.961379559249025, -17.31113569077991 ], [ 34.961525461854002, -17.311145282221496 ], [ 34.961670641932749, -17.311162195257861 ], [ 34.96181470157412, -17.311186383531847 ], [ 34.96195724593769, -17.311217780746176 ], [ 34.962097884335776, -17.311256300845265 ], [ 34.962236231304082, -17.311301838251062 ], [ 34.962371907658095, -17.311354268152318 ], [ 34.962504541532205, -17.311413446846771 ], [ 34.962633769398863, -17.311479212134888 ], [ 34.962759237064759, -17.311551383764364 ], [ 34.962880600641611, -17.31162976392423 ], [ 34.962997527488582, -17.311714137786886 ], [ 34.96310969712394, -17.311804274096819 ], [ 34.96321680210341, -17.311899925804482 ], [ 34.963291039141012, -17.311973548628245 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 20.0, "radius": null, "pivot": "DL1.1", "pivot_quadrant": "DL1.1" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.973316494728564, -17.333251794475164 ], [ 34.973346256561562, -17.333419673334269 ], [ 34.973237698645903, -17.333332450175927 ], [ 34.973316494728564, -17.333251794475164 ] ] ] } }, +{ "type": "Feature", "properties": { "hectares": 20.0, "radius": null, "pivot": "DL1.1", "pivot_quadrant": "DL1.1" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.973346256561562, -17.333419673334269 ], [ 34.973316494728564, -17.333251794475164 ], [ 34.974847423373653, -17.331684735320394 ], [ 34.975486037377962, -17.331031049777948 ], [ 34.976506367806572, -17.330987952117045 ], [ 34.97768922874593, -17.331936098320032 ], [ 34.978068466604348, -17.332608417206025 ], [ 34.977245857001407, -17.333467640564528 ], [ 34.975576332106158, -17.335211474799472 ], [ 34.973346256561562, -17.333419673334269 ] ] ] } } +] +} diff --git a/python_app/.gitignore b/python_app/.gitignore new file mode 100644 index 0000000..7c3d9f1 --- /dev/null +++ b/python_app/.gitignore @@ -0,0 +1,43 @@ +# .gitignore + +# Ignore the virtual environment directory +myenv/ + +# Byte-compiled / optimized files +__pycache__/ +*.py[cod] +*$py.class + +# Ignore all .pyc files in any directory +**/*.pyc + +# Ignore pip wheel metadata +pip-wheel-metadata/ + +# Ignore the `dist/` directory used for package distributions +dist/ + +# Ignore Python egg metadata, regenerated from source files by setuptools +*.egg-info/ +*.egg-info/* +*.egg/ + +# Ignore Jupyter Notebook +.ipynb_checkpoints + +# Ignore VSCode directory +.vscode/ + +# Ignore JetBrains IDEs directory +.idea/ + +# Ignore MacOS directory +.DS_Store + +# Ignore other unwanted file +*.log +*.bak +*.swp +*.swo +*.swp + diff --git a/python_app/Chemba_download.ipynb b/python_app/Chemba_download.ipynb new file mode 100644 index 0000000..e86e00a --- /dev/null +++ b/python_app/Chemba_download.ipynb @@ -0,0 +1,1031 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "b7ca7102-5fd9-481f-90cd-3ba60e288649", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# $ pip install sentinelhub\n", + "# pip install gdal\n", + "\n", + "import os\n", + "import datetime\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from pathlib import Path\n", + "from osgeo import gdal\n", + "\n", + "from sentinelhub import MimeType, CRS, BBox, SentinelHubRequest, SentinelHubDownloadClient, \\\n", + " DataCollection, bbox_to_dimensions, DownloadRequest, SHConfig, BBoxSplitter, read_data\n", + "\n", + "config = SHConfig()\n", + "\n", + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "330c967c-2742-4a7a-9a61-28bfdaf8eeca", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "#pip install pipreqs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8f2ec814-76b2-47e6-b74b-a4ffddd908f1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "49f8496a-a267-4b74-9500-a168e031ed68", + "metadata": {}, + "outputs": [], + "source": [ + "#import pipreqs\n", + "#pipreqs Resilience BV/4002 CMD App - General/4002 CMD Team/4002 TechnicalData/04 WP2 technical/python/Chemba_download.ipynb" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5491a840-779c-4f0c-8164-c3de738b3298", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "config.sh_client_id = '6e542a89-b040-40ca-8352-8b979ee3067a'\n", + "config.sh_client_secret = 'PiNaFQfP<.)59]rS.*}OF+hlrrzf#k~uqlhy-_F%'" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "eb1fb662-0e25-4ca9-8317-c6953290842b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "collection_id = 'c691479f-358c-46b1-b0f0-e12b70a9856c'\n", + "byoc = DataCollection.define_byoc(\n", + " collection_id,\n", + " name='planet_data2',\n", + " is_timeless=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "244b5752-4f02-4347-9278-f6a0a46b88f4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\"\"\"\n", + "Utilities used by example notebooks\n", + "\"\"\"\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "\n", + "def plot_image(image, factor=1.0, clip_range=None, **kwargs):\n", + " \"\"\"\n", + " Utility function for plotting RGB images.\n", + " \"\"\"\n", + " fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(15, 15))\n", + " if clip_range is not None:\n", + " ax.imshow(np.clip(image * factor, *clip_range), **kwargs)\n", + " else:\n", + " ax.imshow(image * factor, **kwargs)\n", + " ax.set_xticks([])\n", + " ax.set_yticks([]) \n", + "\n", + "\n", + "#evalscript_true_color = \"\"\"\n", + "# //VERSION=3\n", + "#\n", + "# function setup() {\n", + "# return {\n", + "# input: [{\n", + "# bands: [\"B1\", \"B2\", \"B3\", \"B4\", \"UDM\"]\n", + "# }],\n", + "# output: {\n", + "# bands: 5\n", + "# }\n", + "# };\n", + "# }\n", + "#\n", + "# function evaluatePixel(sample) {\n", + "# return [2.5 * sample.B1 / 10000, 2.5 * sample.B2 / 10000, 2.5 * sample.B3 / 10000, 2.5 * sample.B4 / 10000, sample.UDM];\n", + "# }\n", + "#\"\"\"\n", + "\n", + "evalscript_true_color = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n", + " }],\n", + " output: {\n", + " bands: 5\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n", + " }\n", + "\"\"\"\n", + "BASE_PATH_SINGLE_IMAGES = Path('../laravel_app/storage/app/chemba/single_images')\n", + "BASE_PATH_WEEKLY = Path('../laravel_app/storage/app/chemba/weekly_img')\n", + "\n", + "def get_true_color_request(time_interval): \n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=time_interval\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / date),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_day_east(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/single_images/'\n", + " \n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=(time_interval, time_interval)\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox_east,\n", + " size=chemba_size_east,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / time_interval),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_day_west(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/single_images/'\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=(time_interval, time_interval)\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox_west,\n", + " size=chemba_size_west,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / time_interval),\n", + "\n", + " )\n", + "\n", + "def get_true_color_request_week(time_interval):\n", + " base_path = '../laravel_app/storage/app/chemba/weekly_img/'\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=time_interval\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.TIFF)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config,\n", + " data_folder=str(BASE_PATH_SINGLE_IMAGES / date),\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5abb2cc0-5e2f-46cd-9676-3093d07b0624", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#end = datetime.date.today() - datetime.timedelta(days=1)\n", + "#start = end - datetime.timedelta(days=6)\n", + "\n", + "#end = datetime.date(2022, 7, 1)\n", + "#start = datetime.date(2022, 7, 21)\n", + "\n", + "#n_chunks = start - end\n", + "#n_chunks.days\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a4937240-27f9-44c3-ad9c-cec6f2ffe4c8", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Monthly time windows:\n", + "\n", + "2023-09-30\n", + "2023-10-01\n", + "2023-10-02\n", + "2023-10-03\n", + "2023-10-04\n", + "2023-10-05\n", + "2023-10-06\n" + ] + } + ], + "source": [ + "#end = datetime.date(2022, 8, 4)\n", + "#start = datetime.date(2023, 3, 1)\n", + "days_needed = 6\n", + "\n", + "end = datetime.date.today() - datetime.timedelta(days=days_needed - 1)\n", + "start = end - datetime.timedelta(days=1)\n", + "\n", + "\n", + "n_chunks = days_needed + 1\n", + "tdelta = datetime.timedelta(days=1)\n", + "edges = [(start + i*tdelta).isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i]) for i in range(len(edges))]\n", + "\n", + "#date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "print('Monthly time windows:\\n')\n", + "for slot in slots:\n", + " print(slot)" + ] + }, + { + "cell_type": "markdown", + "id": "0c18e312-8421-47d7-84f9-ed7d5e47e7ee", + "metadata": {}, + "source": [ + "### Chemba east side" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2335139b-dfb1-4371-ae2c-c2b9c8cbf10c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "chemba_east = [34.8830, -17.3516, 34.9380, -17.2917]\n", + "resolution = 3\n", + "chemba_bbox_east = BBox(bbox=chemba_east, crs=CRS.WGS84)\n", + "chemba_size_east = bbox_to_dimensions(chemba_bbox_east, resolution=resolution)\n", + "\n", + "chemba_west = [34.9460, -17.3500, 34.9839, -17.3110]\n", + "chemba_bbox_west = BBox(bbox=chemba_west, crs=CRS.WGS84)\n", + "chemba_size_west = bbox_to_dimensions(chemba_bbox_west, resolution=resolution)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "77513576-2fed-4d17-a665-d11267b42390", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def download_function(slot):\n", + " ### Chemba east side\n", + " # create a list of requests \n", + " list_of_requests = [get_true_color_request_day_east(slot)]\n", + " list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + " # download data chemba east with multiple threads\n", + " data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + " print(f' East downloaded ' +slot)\n", + "\n", + " ### Chemba west side\n", + " # create a list of requests\n", + " list_of_requests = [get_true_color_request_day_west(slot)]\n", + " list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + " # download data chemba west with multiple threads\n", + " data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + " print(f' West downloaded ' +slot)\n", + " \n", + " time.sleep(.5)\n", + "\n", + "def merge_files(slot):\n", + " base_path = Path('../laravel_app/storage/app/chemba')\n", + " # List the downloaded Tiffs in the different subfolders with pathlib (native library)\n", + " file_list = [f\"{x}/response.tiff\" for x in Path(base_path / 'single_images' / slot).iterdir()]\n", + " print(file_list)\n", + "\n", + " folder_for_merged_tifs = str(base_path / 'merged_tif' / f\"{slot}.tif\")\n", + " folder_for_virtual_raster = str(base_path / 'merged_virtual' / f\"merged{slot}.vrt\")\n", + "\n", + " # Create a virtual raster\n", + " vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n", + " vrt_all = gdal.BuildVRT(folder_for_virtual_raster, file_list)\n", + "\n", + " # Convert to JPEG\n", + " gdal.Translate(folder_for_merged_tifs,folder_for_virtual_raster)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d5830b6e-da0a-416f-867e-cbca4bd434f5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " East downloaded 2023-09-30\n", + " West downloaded 2023-09-30\n", + " East downloaded 2023-10-01\n", + " West downloaded 2023-10-01\n", + " East downloaded 2023-10-02\n", + " West downloaded 2023-10-02\n", + " East downloaded 2023-10-03\n", + " West downloaded 2023-10-03\n", + " East downloaded 2023-10-04\n", + " West downloaded 2023-10-04\n", + " East downloaded 2023-10-05\n", + " West downloaded 2023-10-05\n", + " East downloaded 2023-10-06\n", + " West downloaded 2023-10-06\n" + ] + } + ], + "source": [ + "for slot in slots:\n", + " download_function(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "68db3c15-6f94-432e-b315-c329e4251b21", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff', 'chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/369e30117c87ea5a93d4b1fdc1e200f5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-09-30/19f952f0b4dc03e82b31ddda504eca37/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff', 'chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/52579ecea6e4c674f3f15a70692b2470/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-01/199af70a0a9bdf56a6938888f8ad073c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff', 'chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/131056d1de92580e74203e14cda16072/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-02/f16e88a64ddff761b1c5b534c18588c5/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff', 'chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/7a15a778f1bef721f997fc4c7071a022/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-03/0cf952e5d972cd1b001c3ca1e0f286fc/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff', 'chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff', 'chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff', 'chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/response.tiff: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n", + "Warning 1: TIFFReadDirectory:Sum of Photometric type-related color channels and ExtraSamples doesn't match SamplesPerPixel. Defining non-color channels as ExtraSamples.\n" + ] + } + ], + "source": [ + "for slot in slots:\n", + " merge_files(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4f80e84e-95b5-41dc-83d8-720cd699a79a", + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (4067800170.py, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn[13], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m stop here\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "raise SystemExit(\"Stop right there!\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a8d367da-3eb5-419a-9a8a-d315f8ae8d89", + "metadata": {}, + "outputs": [], + "source": [ + "days = 1\n", + "start = datetime.datetime(2021,3,12)\n", + "end = start + datetime.timedelta(days=days)\n", + "n_chunks = 1\n", + "tdelta = (end - start) / n_chunks\n", + "edges = [(start + i*tdelta).date().isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "\n", + "date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "print('Monthly time windows:\\n')\n", + "for slot in slots:\n", + " print(slot)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "461cc3fa-4b7a-48aa-abee-25eb97689707", + "metadata": {}, + "outputs": [], + "source": [ + "days = 1\n", + "start = datetime.datetime(2022,4,27)\n", + "end = start + datetime.timedelta(days=days)\n", + "n_chunks = 1\n", + "tdelta = (end - start) / n_chunks\n", + "edges = [(start + i*tdelta).date().isoformat() for i in range(n_chunks)]\n", + "#slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "slots = [(edges[i], edges[i]) for i in range(len(edges))]\n", + "\n", + "date = start.strftime(\"%Y-%m-%d\")\n", + "\n", + "### Chemba east side\n", + "chemba_east = [34.8830, -17.3516, 34.9380, -17.2917]\n", + "resolution = 3\n", + "chemba_bbox = BBox(bbox=chemba_east, crs=CRS.WGS84)\n", + "chemba_size = bbox_to_dimensions(chemba_bbox, resolution=resolution)\n", + "\n", + "# create a list of requests \n", + "list_of_requests = [get_true_color_request(slot) for slot in slots]\n", + "list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + "# download data with multiple threads\n", + "data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + "\n", + "\n", + "\n", + "### Chemba west side\n", + "chemba_west = [34.9460, -17.3500, 34.9839, -17.3110]\n", + "chemba_bbox = BBox(bbox=chemba_west, crs=CRS.WGS84)\n", + "chemba_size = bbox_to_dimensions(chemba_bbox, resolution=resolution)\n", + "\n", + "print(f'Image shape at {resolution} m resolution: {chemba_size} pixels')\n", + "\n", + "# create a list of requests\n", + "list_of_requests = [get_true_color_request(slot) for slot in slots]\n", + "list_of_requests = [request.download_list[0] for request in list_of_requests]\n", + "\n", + "# download data with multiple threads\n", + "data = SentinelHubDownloadClient(config=config).download(list_of_requests, max_threads=15)\n", + "print(f'data downloaded')\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "52b5f742-3db0-4290-a467-688f8aec36d5", + "metadata": {}, + "source": [ + "### Chemba west side" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d14b7a1e-87a6-4344-859c-5e602bd2e006", + "metadata": {}, + "outputs": [], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9daf5c9-39f6-44ea-92dd-dee355669b19", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7f42def-21c2-439c-9e96-a24ca1eb2176", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c5d6f71-e7af-450f-b6c2-151810220159", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e6f8a1d-bb36-4e96-b06d-6967ea8f3d98", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a3c9cc9-ad37-405a-b8bf-996fd474540e", + "metadata": {}, + "outputs": [], + "source": [ + "a " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2c127e0-eaf6-46b8-af5d-6f8000bf3df3", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "3432ffcf-606f-4c34-8f8c-a21bee6326b4", + "metadata": {}, + "source": [ + "## Visualise the image" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0d6b8db8-a33b-45bc-80a9-877ee1b8b80c", + "metadata": {}, + "outputs": [], + "source": [ + "evalscript_true_color_png = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"B1\", \"B2\", \"B3\", \"UDM\"]\n", + " }],\n", + " output: {\n", + " bands: 3\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [2.5 * sample.B1 / 10000, 2.5 * sample.B2 / 10000, 2.5 * sample.B3 / 10000, sample.UDM];\n", + " }\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e498acb8-8e14-41f4-84cd-54f4648c1716", + "metadata": {}, + "outputs": [], + "source": [ + "def get_true_color_request_png(time_interval):\n", + " return SentinelHubRequest(\n", + " evalscript=evalscript_true_color_png,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data,\n", + " time_interval=('2022-02-10', '2022-02-17')\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.PNG)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19fd091a-dd67-484f-a1a7-3bce61bc9517", + "metadata": {}, + "outputs": [], + "source": [ + "# create a list of requests\n", + "list_of_requests_png = [get_true_color_request_png(slot) for slot in slots]\n", + "list_of_requests_png = [request.download_list[0] for request in list_of_requests_png]\n", + "\n", + "# download data with multiple threads\n", + "data_png = SentinelHubDownloadClient(config=config).download(list_of_requests_png, max_threads=5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d8abc2e-e245-490a-83eb-36f6a5ec0418", + "metadata": {}, + "outputs": [], + "source": [ + "# some stuff for pretty plots\n", + "ncols = 4\n", + "nrows = 7\n", + "aspect_ratio = chemba_size[0] / chemba_size[1]\n", + "subplot_kw = {'xticks': [], 'yticks': [], 'frame_on': False}\n", + "\n", + "fig, axs = plt.subplots(ncols=ncols, nrows=nrows, figsize=(5 * ncols * aspect_ratio, 5 * nrows),\n", + " subplot_kw=subplot_kw)\n", + "\n", + "for idx, image in enumerate(data_png):\n", + " ax = axs[idx // ncols][idx % ncols]\n", + " ax.imshow(np.clip(image * 2.5/255, 0, 1))\n", + " ax.set_title(f'{slots[idx][0]} ', fontsize=10)\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7803cfac-ce53-4461-8702-88b872ef64aa", + "metadata": {}, + "outputs": [], + "source": [ + "evalscript_true_color = \"\"\"\n", + " //VERSION=3\n", + "\n", + " function setup() {\n", + " return {\n", + " input: [{\n", + " bands: [\"B1\", \"B2\", \"B3\"]\n", + " }],\n", + " output: {\n", + " bands: 3\n", + " }\n", + " };\n", + " }\n", + "\n", + " function evaluatePixel(sample) {\n", + " return [sample.B04, sample.B03, sample.B02];\n", + " }\n", + "\"\"\"\n", + "\n", + "request_true_color = SentinelHubRequest(\n", + " evalscript=evalscript_true_color,\n", + " input_data=[\n", + " SentinelHubRequest.input_data(\n", + " data_collection=DataCollection.planet_data2,\n", + " time_interval=('2022-02-01', '2022-02-10'),\n", + " )\n", + " ],\n", + " responses=[\n", + " SentinelHubRequest.output_response('default', MimeType.PNG)\n", + " ],\n", + " bbox=chemba_bbox,\n", + " size=chemba_size,\n", + " config=config\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab26df2a-f780-4f6b-8d09-0eead9d6db2b", + "metadata": {}, + "outputs": [], + "source": [ + "true_color_imgs = request_true_color.get_data()\n" + ] + }, + { + "cell_type": "markdown", + "id": "a51f41f5-f5e1-4fa7-aef2-53371d1386ce", + "metadata": {}, + "source": [ + "## change file name\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49a52f5b-2626-4dd2-9e57-6b44691f9952", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import glob\n", + "import json\n", + "import datetime as dt\n", + "from urllib.parse import unquote\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3720a99-2906-41d9-ac1b-9c9993cd8308", + "metadata": {}, + "outputs": [], + "source": [ + "def get_request_dt(request_file):\n", + " with open(request_file, 'r') as req:\n", + " request = json.load(req)\n", + " url = unquote(request['url'])\n", + " time_parameter = [t for t in url.split('&') if t.startswith('TIME=')][0]\n", + " time = time_parameter.split('TIME=')[1].split('/')[0]\n", + " return dt.datetime.strptime(time, \"%Y-%m-%dT%H:%M:%S\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f4e5844-34bc-4cb9-9365-46356b1db552", + "metadata": {}, + "outputs": [], + "source": [ + "if __name__ == \"__main__\":\n", + " folders = glob.glob('.\\\\test_dir2\\\\*')\n", + " dates = [get_request_dt(f'{folder}/request.json') for folder in folders]\n", + " df = pd.DataFrame(zip(folders, dates), columns=['folder', 'datetime'])\n", + " df.sort_values(by='datetime', ascending=True, inplace=True)\n", + " print(df.head().to_markdown())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4319580b-f0b7-4370-91f4-bc4fcf068bc3", + "metadata": {}, + "outputs": [], + "source": [ + "def get_request_dt(request_file):\n", + " with open(request_file, 'r') as req:\n", + " request = json.load(req)\n", + " url = unquote(request['url'])\n", + " return url.split('/')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87580f26-0ccc-4061-a460-52d941a90b6a", + "metadata": {}, + "outputs": [], + "source": [ + "folders = glob.glob('.\\\\test_dir2\\\\*')\n", + "[get_request_dt(f'{folder}/request.json') for folder in folders]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6569956e-91c5-42c9-acfa-74fde22ee1ce", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "folders = glob.glob('.\\\\test_dir2\\\\*')\n", + "dates = [get_request_dt(f'{folder}/request.json') for folder in folders]\n", + "dates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2608ac51-fa24-4fd6-8758-cf27bda8860e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json b/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json new file mode 100644 index 0000000..2891121 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-04/37292b2973437bbcd8164d4b0cb5ce09/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-04T00:00:00Z", + "to": "2023-10-04T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:04.511299", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.275736, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:04 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json b/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json new file mode 100644 index 0000000..94f717d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-04/a3957aa1c1478fed498c3f1e94b8703a/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-04T00:00:00Z", + "to": "2023-10-04T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:01.042605", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.668425, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:00 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json b/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json new file mode 100644 index 0000000..af9a1f6 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-05/1ab274c42d49578ad25c592bc16c5c17/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-05T00:00:00Z", + "to": "2023-10-05T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:13.161955", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 2.723803, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:13 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json b/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json new file mode 100644 index 0000000..653cc8a --- /dev/null +++ b/python_app/chemba_single_images/2023-10-05/ca219fceac18e287d129aaca803998f0/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-05T00:00:00Z", + "to": "2023-10-05T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:10.248784", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.010186, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:10 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json b/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json new file mode 100644 index 0000000..53a1fe1 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-06/a1c4a82635c5b3379cac01c44428a46c/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-06T00:00:00Z", + "to": "2023-10-06T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:22.861847", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.398991, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:22 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json b/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json new file mode 100644 index 0000000..885637d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-06/cae35e70e26ce81aff15dcea89246b07/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-06T00:00:00Z", + "to": "2023-10-06T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:19.247047", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.512139, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:19 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json b/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json new file mode 100644 index 0000000..e8262bf --- /dev/null +++ b/python_app/chemba_single_images/2023-10-07/3a899f894dfc9421c0454963e781ee50/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-07T00:00:00Z", + "to": "2023-10-07T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:28.996066", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 1.55439, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:29 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json b/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json new file mode 100644 index 0000000..c6ab74d --- /dev/null +++ b/python_app/chemba_single_images/2023-10-07/55237fa25a668d6bb2a5d64d3e15a25e/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-07T00:00:00Z", + "to": "2023-10-07T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:27.401614", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 4.002806, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:27 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json b/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json new file mode 100644 index 0000000..514cad1 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-08/667654d090d9d364ba2503be89efd0e5/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-08T00:00:00Z", + "to": "2023-10-08T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:36.491864", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.551305, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:36 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json b/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json new file mode 100644 index 0000000..abe10f8 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-08/e529f48ef19175c434efd2631a2369e6/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-08T00:00:00Z", + "to": "2023-10-08T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:32.725291", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.128947, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:32 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json b/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json new file mode 100644 index 0000000..a238ca2 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-09/52f91750075843995f2e04edfd234270/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-09T00:00:00Z", + "to": "2023-10-09T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:46.392453", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 3.275898, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:46 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json b/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json new file mode 100644 index 0000000..a615271 --- /dev/null +++ b/python_app/chemba_single_images/2023-10-09/eb72f49b53caed085e0fb6b5e38b11aa/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-09T00:00:00Z", + "to": "2023-10-09T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:42.824171", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 5.59089, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:42 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json b/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json new file mode 100644 index 0000000..9c2eaca --- /dev/null +++ b/python_app/chemba_single_images/2023-10-10/7f67b5dfc2f37c26b0307e14259610ce/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.946, + -17.35, + 34.9839, + -17.311 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-10T00:00:00Z", + "to": "2023-10-10T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 1425, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1358 + } + }, + "timestamp": "2023-10-10T11:45:51.259003", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 1.552932, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:51 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "12.303352062622253" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json b/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json new file mode 100644 index 0000000..b4f5ffe --- /dev/null +++ b/python_app/chemba_single_images/2023-10-10/86fab75f716b316a0de019f95a7cf713/request.json @@ -0,0 +1,65 @@ +{ + "request": { + "headers": { + "accept": "image/tiff", + "content-type": "application/json" + }, + "payload": { + "evalscript": "\n //VERSION=3\n\n function setup() {\n return {\n input: [{\n bands: [\"Blue\", \"Green\", \"Red\", \"NIR\", \"UDM\"]\n }],\n output: {\n bands: 5\n }\n };\n }\n\n function evaluatePixel(sample) {\n return [2.5 * sample.Blue / 10000, 2.5 * sample.Green / 10000, 2.5 * sample.Red / 10000, 2.5 * sample.NIR / 10000, sample.UDM];\n }\n", + "input": { + "bounds": { + "bbox": [ + 34.883, + -17.3516, + 34.938, + -17.2917 + ], + "properties": { + "crs": "http://www.opengis.net/def/crs/EPSG/0/4326" + } + }, + "data": [ + { + "dataFilter": { + "timeRange": { + "from": "2023-10-10T00:00:00Z", + "to": "2023-10-10T23:59:59Z" + } + }, + "type": "byoc-c691479f-358c-46b1-b0f0-e12b70a9856c" + } + ] + }, + "output": { + "height": 2191, + "responses": [ + { + "format": { + "type": "image/tiff" + }, + "identifier": "default" + } + ], + "width": 1971 + } + }, + "timestamp": "2023-10-10T11:45:49.667010", + "url": "https://services.sentinel-hub.com/api/v1/process" + }, + "response": { + "elapsed": 2.734391, + "headers": { + "Connection": "keep-alive", + "Content-Type": "image/tiff", + "Date": "Tue, 10 Oct 2023 09:45:49 GMT", + "Transfer-Encoding": "chunked", + "access-control-allow-credentials": "true", + "access-control-allow-headers": "origin,content-type,accept,accept-crs,authorization,cache-control", + "access-control-allow-methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH", + "access-control-allow-origin": "*", + "access-control-max-age": "3600", + "x-processingunits-spent": "27.456034959410772" + }, + "status_code": 200 + } +} \ No newline at end of file diff --git a/r_app/.Rprofile b/r_app/.Rprofile new file mode 100644 index 0000000..81b960f --- /dev/null +++ b/r_app/.Rprofile @@ -0,0 +1 @@ +source("renv/activate.R") diff --git a/r_app/.gitignore b/r_app/.gitignore new file mode 100644 index 0000000..2241998 --- /dev/null +++ b/r_app/.gitignore @@ -0,0 +1,18 @@ +# .gitignore + +# Ignore renv binary cache +renv/cache/ + +# Ignore temporary files +*.tmp +*.swp +*.save + +# Ignore files related to Rproj +.Rproj.user/ +.Rhistory +.RData + +# Ignore OSX files +.DS_Store + diff --git a/r_app/1_harvest_data_EcoFarm_v2.R b/r_app/1_harvest_data_EcoFarm_v2.R new file mode 100644 index 0000000..80cb946 --- /dev/null +++ b/r_app/1_harvest_data_EcoFarm_v2.R @@ -0,0 +1,178 @@ +#download excel with planting dates +library(googledrive) +library(here) +library(tidyverse) +library(lubridate) +library(readxl) + +#create directory +storage_dir <- here("laravel_app/storage/app") +data_dir <- here(storage_dir, "Data") +harvest_dir <- here(data_dir, "HarvestData") + +dir.create(file.path(data_dir)) +dir.create(file.path(harvest_dir)) + + +week = ymd(Sys.Date()) +file_name <- here(harvest_dir, paste("Data", week, ".xlsx")) +# yield_file_path <- here("Data", "HarvestData", paste("Current - Pivots planting date and harvesting data.xlsx")) + +#Check its existence +if (file.exists(file_name)) { + #Delete file if it exists + file.remove(file_name) + print("File deleted") +} + +#options(gargle_oauth_email = "henkpoldergraaf@gmail.com") + +#folder_url <- "https://docs.google.com/spreadsheets/d/1KPOPHvlzTBDvgFCYQetss0yoafeZeoNW/edit?rtpof=true#gid=1683410275" +#folder <- drive_get(as_id(folder_url)) + +#drive_download(folder, file_name, overwrite = T) + +excel_file_name = here(storage_dir,"harvesting_data", "Current - Pivots planting date and harevsting data.xlsx") + +# library(googlesheets4) +# read_sheet(folder_url) +#get dates in same column + +dates <- read_excel(excel_file_name, + skip=1, + col_types = c("text", "numeric", "text", "date", "numeric", "numeric", "numeric", + "date", "numeric", "skip", "skip", "numeric", "numeric", "numeric","skip", #2020 harvesting data + "date", "numeric", "skip", "skip", "numeric", "numeric", "numeric","skip", #2021 harvesting data + "date", "numeric", "skip", "skip", "numeric", "skip", "numeric","skip", #2022 harvesting data + "date", "numeric", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "skip", "numeric", "numeric","numeric","skip", #2023 + "skip", "skip", "skip", "skip", "skip", "skip","skip", "skip")) %>% #empty columns + rename(pivot_quadrant = PIVOT, + planting_date = `Date planted`, + Age = `Age (WEEK)`, + Year_replanted = `Year replanted`, + Harvesting_date_2020 = `2020 Harvest data`, + Harvesting_age_2020 = `...9`, + MT_weight_2020 = `...10`, + Tcha_2020 = `...11`, + Tchm_2020 = `...12`, + Harvesting_date_2021 = `2021/2022 Harvest data`, + Harvesting_age_2021 = `...14`, + MT_weight_2021 = `...15`, + Tcha_2021 = `...16`, + Tchm_2021 = `...17`, + Harvesting_date_2022 = `2022/2023 Harvest data`, + Harvesting_age_2022 = `...19`, + MT_weight_2022 = `...20`, + Tcha_2022 = `...21`) %>% + + slice(-1) %>% #select(-age) %>% + filter(pivot_quadrant != "Total") %>% #drop_na(pivot_quadrant) %>% + mutate(planting_date = ymd(planting_date ), + Harvesting_date_2020 = ymd(Harvesting_date_2020), + Harvesting_date_2021 = ymd(Harvesting_date_2021), + Harvesting_date_2022= ymd(Harvesting_date_2022), + Age = round(Age,0)) %>% filter(pivot_quadrant != "Total/Average") + +#copy each row and add ABCD +quadrants <- dates %>% slice(rep(1:n(), each=4)) %>% + group_by(pivot_quadrant) %>% + mutate(pivot_quadrant = paste0(pivot_quadrant, c("A", "B", "C", "D"))) %>% + filter(pivot_quadrant != "P1.8D" & pivot_quadrant != "P1.8 Q.DA"& pivot_quadrant != "P1.8 Q.DB"& pivot_quadrant != "P1.8 Q.DC") %>% + mutate(pivot_quadrant = case_when(pivot_quadrant == "P1.3 ABA" ~ "P1.3A", + pivot_quadrant == "P1.3 ABB" ~ "1.3B", + pivot_quadrant == "P1.3 ABC" ~ "1.3A", + pivot_quadrant == "P1.3 ABD" ~ "1.3A", + pivot_quadrant == "P1.3 CDA" ~ "1.3C", + pivot_quadrant == "P1.3 CDB" ~ "1.3D", + pivot_quadrant == "P1.3 CDC" ~ "1.3C", + pivot_quadrant == "P1.3 CDD" ~ "1.3C", + + pivot_quadrant == "P1.8 Q.DD" ~ "1.8D", + + pivot_quadrant == "P1.9.ABA" ~ "1.9A", + pivot_quadrant == "P1.9.ABB" ~ "1.9B", + pivot_quadrant == "P1.9.ABC" ~ "1.9A", + pivot_quadrant == "P1.9.ABD" ~ "1.9A", + pivot_quadrant == "P1.9.CDA" ~ "1.9C", + pivot_quadrant == "P1.9.CDB" ~ "1.9D", + pivot_quadrant == "P1.9.CDC" ~ "1.9C", + pivot_quadrant == "P1.9.CDD" ~ "1.9C", + + pivot_quadrant == "P2.3AA" ~ "2.3A", + pivot_quadrant == "P2.3AB" ~ "2.3A", + pivot_quadrant == "P2.3AC" ~ "2.3A", + pivot_quadrant == "P2.3AD" ~ "2.3A", + pivot_quadrant == "P2.3DA" ~ "2.3D", + pivot_quadrant == "P2.3DB" ~ "2.3D", + pivot_quadrant == "P2.3DC" ~ "2.3D", + pivot_quadrant == "P2.3DD" ~ "2.3D", + pivot_quadrant == "P2.3BCA" ~ "2.3B", + pivot_quadrant == "P2.3BCB" ~ "2.3B", + pivot_quadrant == "P2.3BCC" ~ "2.3C", + pivot_quadrant == "P2.3BCD" ~ "2.3C", + + pivot_quadrant == "P2.5 ABA" ~ "2.5A", + pivot_quadrant == "P2.5 ABB" ~ "2.5B", + pivot_quadrant == "P2.5 ABC" ~ "2.5A", + pivot_quadrant == "P2.5 ABD" ~ "2.5A", + pivot_quadrant == "P2.5 CDA" ~ "2.5C", + pivot_quadrant == "P2.5 CDB" ~ "2.5D", + pivot_quadrant == "P2.5 CDC" ~ "2.5C", + pivot_quadrant == "P2.5 CDD" ~ "2.5C", + + pivot_quadrant == "P3.1ABA" ~ "3.1A", + pivot_quadrant == "P3.1ABB" ~ "3.1B", + pivot_quadrant == "P3.1ABC" ~ "3.1A", + pivot_quadrant == "P3.1ABD" ~ "3.1A", + pivot_quadrant == "P3.1CDA" ~ "3.1C", + pivot_quadrant == "P3.1CDB" ~ "3.1D", + pivot_quadrant == "P3.1CDC" ~ "3.1C", + pivot_quadrant == "P3.1CDD" ~ "3.1C", + + pivot_quadrant == "P3.2 ABA" ~ "3.2A", + pivot_quadrant == "P3.2 ABB" ~ "3.2B", + pivot_quadrant == "P3.2 ABC" ~ "3.2A", + pivot_quadrant == "P3.2 ABD" ~ "3.2A", + pivot_quadrant == "P3.2 CDA" ~ "3.2C", + pivot_quadrant == "P3.2 CDB" ~ "3.2D", + pivot_quadrant == "P3.2 CDC" ~ "3.2C", + pivot_quadrant == "P3.2 CDD" ~ "3.2C", + + pivot_quadrant == "DL 1.3A" ~ "DL1.3", + pivot_quadrant == "DL 1.3B" ~ "DL1.3", + pivot_quadrant == "DL 1.3C" ~ "DL1.3", + pivot_quadrant == "DL 1.3D" ~ "DL1.3", + + pivot_quadrant == "DL 1.1A" ~ "DL1.1", + pivot_quadrant == "DL 1.1B" ~ "DL1.1", + pivot_quadrant == "DL 1.1C" ~ "DL1.1", + pivot_quadrant == "DL 1.1D" ~ "DL1.1", + + TRUE ~ pivot_quadrant) ) %>% unique() %>% + mutate_at("pivot_quadrant", str_replace, "P", "") %>% + mutate(pivot = pivot_quadrant) %>% + mutate_at("pivot",str_replace, "[ABCD]", "") %>% + mutate(pivot = case_when(pivot == "L1.1"~"DL1.1", + pivot == "L1.3" ~"DL1.3", + TRUE ~ pivot)) + +quadrants2 <- quadrants %>% + mutate( + season_start_2021 = case_when(!is.na(Harvesting_date_2021) ~ Harvesting_date_2021 - (Harvesting_age_2021 * 30)) , + season_end_2021 = case_when(!is.na(Harvesting_date_2021) ~ Harvesting_date_2021), + + season_start_2022 = case_when(is.na(Harvesting_date_2021) & !is.na(Harvesting_date_2022) ~ Harvesting_date_2022 - (Harvesting_age_2022 * 30), + !is.na(Harvesting_date_2021) & !is.na(Harvesting_date_2022) ~ Harvesting_date_2021 + ), + season_end_2022 = case_when(!is.na(Harvesting_date_2022) & !is.na(season_start_2022) ~ Harvesting_date_2022), + + season_start_2023 = case_when(Ratoons == 0 ~ planting_date, + TRUE ~ Harvesting_date_2022), + season_start_2023 = case_when(is.na(Harvesting_date_2022) ~ Harvesting_date_2021, + TRUE ~ season_start_2023), + season_end_2023 = case_when(!is.na(season_start_2023) ~ ymd(Sys.Date())) + + ) + +saveRDS(quadrants2, here(harvest_dir, "harvest_data_new")) + diff --git a/r_app/2_CI_data_prep.R b/r_app/2_CI_data_prep.R new file mode 100644 index 0000000..33975a3 --- /dev/null +++ b/r_app/2_CI_data_prep.R @@ -0,0 +1,218 @@ +library(here) +library(sf) +library(tidyverse) +library(lubridate) +library(terra) +library(exactextractr) + +library(CIprep) + + +laravel_storage_dir <- here("laravel_app/storage/app") +#preparing directories +planet_tif_folder <- here(laravel_storage_dir, "chemba/merged_tif") + +data_dir <- here(laravel_storage_dir, "Data") +extracted_CI_dir <- here(data_dir, "extracted_CI") +daily_CI_vals_dir <- here(extracted_CI_dir, "daily_vals") +cumulative_CI_vals_dir <- here(extracted_CI_dir, "cumulative_vals") + +weekly_CI_mosaic <- here(data_dir, "weekly_mosaic") +harvest_dir <- here(data_dir, "HarvestData") + +dir.create(here(extracted_CI_dir)) +dir.create(here(daily_CI_vals_dir)) +dir.create(here(cumulative_CI_vals_dir)) +dir.create(here(weekly_CI_mosaic)) + + + + +# Creating weekly mosaic +dates <- date_list(0) + +#load pivot geojson +pivot_sf_q <- st_read(here(geojson_dir, "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% vect() + +#load and filter raster files +raster_files <- list.files(planet_tif_folder,full.names = T, pattern = ".tif") #use pattern = '.tif$' or something else if you have multiple files in this folder +filtered_files <- map(dates$days_filter, ~ raster_files[grepl(pattern = .x, x = raster_files)]) %>% + compact() %>% + flatten_chr() + +rasters_masked <- map(filtered_files, mask_raster, fields = pivot_sf_q) %>% set_names(filtered_files) + +rasters_masked[sapply(rasters_masked, is.null)] <- NULL + +rasters_masked <- setNames(rasters_masked, map_chr(names(rasters_masked), date_extract)) + +total_pix_area <- rast(filtered_files[1]) %>% terra::subset(1) %>% + crop(pivot_sf_q, mask = TRUE) %>% + global(., fun="notNA") #%>% +# as.matrix() %>% +# `[`(1, 1) + +total_pix_area <- rast(filtered_files[1]) %>% subset(1) %>% crop(pivot_sf_q, mask = TRUE) %>% freq(., usenames = TRUE) + + + +layer_5_list <- purrr::map(rasters_masked, function(spatraster) { + spatraster[[5]] +}) %>% rast() + +cloud_perc_list <- freq(layer_5_list, usenames = TRUE) %>% + mutate(cloud_perc = (100 -((count/sum(total_pix_area$count))*100)), + cloud_thres_5perc = as.integer(cloud_perc < 5), + cloud_thres_40perc = as.integer(cloud_perc < 40)) %>% + rename(Date = layer) %>% select(-value, -count) + +cloud_index_5perc <- which(cloud_perc_list$cloud_thres_5perc == max(cloud_perc_list$cloud_thres_5perc)) +cloud_index_40perc <- which(cloud_perc_list$cloud_thres_40perc == max(cloud_perc_list$cloud_thres_40perc)) + +## Create mosaic + +if(sum(cloud_perc_list$cloud_thres_5perc)>1){ + message("More than 1 raster without clouds (<5%), max composite made") + + cloudy_rasters_list <- rasters_masked[cloud_index_5perc] + raster_list_subset <- lapply(cloudy_rasters_list, function(r) { + subset(r, 6)}) + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + + # x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else if(sum(cloud_perc_list$cloud_thres_5perc)==1){ + message("Only 1 raster without clouds (<5%)") + + x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- c("red", "green", "blue","nir", "cloud" ,"CI") + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + + # x <- rast(rasters_masked[cloud_index_5perc[1]]) + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else if(sum(cloud_perc_list$cloud_thres_40perc)>1){ + message("More than 1 image contains clouds, composite made of <40% cloud cover images") + + cloudy_rasters_list <- rasters_masked[cloud_index_40perc] + raster_list_subset <- lapply(cloudy_rasters_list, function(r) { + subset(r, 6) + }) + + rsrc <- sprc(raster_list_subset) + x <- mosaic(rsrc, fun = "max") + names(x) <- "CI" + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +}else{ + message("No cloud free images available") + x <- rast(rasters_masked[1]) + x[x] <- NA + names(x) <- c("red", "green", "blue","nir", "cloud" ,"CI") + # writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + # message("raster exported") + +} + +plot(x$CI, main = paste("CI map", dates$week)) +#plotRGB(x, main = paste("RGB image week", dates$week)) + +# writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) +writeRaster(x, here(weekly_CI_mosaic ,paste0("week_", dates$week, "_", dates$year, ".tif")), overwrite=TRUE) + + + +# Extracting CI + +# pivot_sf_q <- st_read(here("..", "Data", "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% vect() +pivot_sf <- st_read(here(data_dir, "pivot_20210625.geojson")) %>% dplyr::select(pivot, pivot_quadrant) %>% group_by(pivot) %>% summarise() %>% vect() + +walk(filtered_files, extract_rasters_daily, field_geojson= pivot_sf_q, quadrants = TRUE, daily_CI_vals_dir) + +pivots_dates0 <- readRDS(here(harvest_dir, "harvest_data_new")) %>% filter( + pivot %in% c("1.1", "1.2", "1.3", "1.4", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", + "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", + "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3") +) + +# pivots_dates_long <- pivots_dates0 %>% +# select(c("pivot_quadrant", "season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% +# pivot_longer(cols = c("season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% +# separate(pivot_quadrant, into = c("name", "Year"), sep = "\\.") + +harvesting_data <- pivots_dates0 %>% + select(c("pivot_quadrant", "season_start_2021", "season_end_2021", "season_start_2022", "season_end_2022", "season_start_2023", "season_end_2023")) %>% + pivot_longer(cols = starts_with("season"), names_to = "Year", values_to = "value") %>% + separate(Year, into = c("name", "Year"), sep = "(?<=season_start|season_end)\\_", remove = FALSE) %>% + mutate(name = str_to_title(name)) %>% + pivot_wider(names_from = name, values_from = value) %>% + rename(Field = pivot_quadrant) +# extracted_values <- list.files("C:\\Users\\timon\\Resilience BV\\4002 CMD App - General\\4002 CMD Team\\4002 TechnicalData\\04 WP2 technical\\DetectingSpotsR\\EcoFarm\\planet\\extracted", +# pattern ="_quadrant", full.names = TRUE) +extracted_values <- list.files(here(daily_CI_vals_dir), full.names = TRUE) + +head(extracted_values) + +pivot_stats <- extracted_values %>% + map_dfr(readRDS) %>% + group_by(pivot_quadrant) %>% + summarise(across(everything(), ~ first(na.omit(.)))) + +pivots_data_present <- unique(pivots_dates0$pivot_quadrant) +quadrant_list <- pivots_data_present + +# gather data into long format for easier calculation and visualisation +pivot_stats_long <- pivot_stats %>% + tidyr::gather("Date", value, -pivot_quadrant, -pivot ) %>% + mutate(Date = right(Date, 8), + Date = lubridate::ymd(Date) + ) %>% + drop_na(c("value","Date")) %>% + mutate(value = as.numeric(value))%>% + filter_all(all_vars(!is.infinite(.)))%>% + rename(Field = pivot_quadrant) + +# #2021 +pivots_dates_Data_2021 <- pivots_dates0 %>% filter(!is.na(season_start_2021)) +pivot_select_model_Data_2021 <- unique(pivots_dates_Data_2021$pivot_quadrant) + +# #2022 +pivots_dates_Data_2022 <- pivots_dates0 %>% filter(!is.na(season_end_2022)) +pivot_select_model_Data_2022 <- unique(pivots_dates_Data_2022$pivot_quadrant ) +# #2023 +pivots_dates_Data_2023 <- pivots_dates0 %>% filter(!is.na(season_start_2023)) +pivot_select_model_Data_2023 <- unique(pivots_dates_Data_2023$pivot_quadrant) +# #2024 +#pivots_dates_Data_2024 <- pivots_dates0 %>% filter(!is.na(season_start_2024)) +#pivot_select_model_Data_2024 <- unique(pivots_dates_Data_2024$pivot_quadrant) + + +## Extracting the correct CI values + +Data_2021 <- map_dfr(pivot_select_model_Data_2021, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2021)) +Data_2022 <- map_dfr(pivot_select_model_Data_2022, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2022)) +Data_2023 <- map_dfr(pivot_select_model_Data_2023, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2023)) +#Data_2024 <- map_dfr(pivot_select_model_Data_2024, ~ extract_CI_data(.x, harvesting_data = harvesting_data, field_CI_data = pivot_stats_long, season = 2024)) + + +CI_all <- rbind(Data_2021, Data_2022, Data_2023) + +CI_all <- CI_all %>% group_by(model) %>% mutate(CI_per_day = FitData - lag(FitData), + cumulative_CI = cumsum(FitData)) + +head(CI_all) + + +saveRDS(CI_all, here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) + + diff --git a/r_app/CI_report_dashboard_planet.Rmd b/r_app/CI_report_dashboard_planet.Rmd new file mode 100644 index 0000000..88b489a --- /dev/null +++ b/r_app/CI_report_dashboard_planet.Rmd @@ -0,0 +1,513 @@ +--- +# title: paste0("CI report week ", week, " - all pivots from ", last_tuesday, " to ", today) +output: + word_document: + reference_docx: word-styles-reference-03.docx + # toc: true +editor_options: + chunk_output_type: console +--- + + +```{r libraries, message=FALSE, warning=FALSE, include=FALSE} +library(here) +library(sf) +library(tidyverse) +library(tmap) +library(lubridate) +library(exactextractr) +library(zoo) +library(raster) + +library(rsample) +library(caret) +library(CAST) +``` + +```{r directories, message=FALSE, warning=FALSE, include=FALSE} +laravel_storage_dir <- here("laravel_app/storage/app") +data_dir <- here(laravel_storage_dir, "Data") +extracted_CI_dir <- here(data_dir, "extracted_CI") +daily_CI_vals_dir <- here(extracted_CI_dir, "daily_vals") +cumulative_CI_vals_dir <- here(extracted_CI_dir, "cumulative_vals") +harvest_dir <- here(data_dir, "HarvestData") + +weekly_CI_mosaic <- here(data_dir, "weekly_mosaic") + +s2_dir <- "C:/Users/timon/Resilience BV/4002 CMD App - General/4002 CMD Team/4002 TechnicalData/04 WP2 technical/python/chemba_S2/" +``` + + +```{r week, message=FALSE, warning=FALSE, include=FALSE} +# week <- 5 +# today = "2023-02-02" +# week <- week(today) +# today = "2022-08-18" +# +today = as.character(Sys.Date()) +week = lubridate::week(Sys.time()) +# week = 26 +title_var <- paste0("CI dashboard week ", week, " - all pivots dashboard using 3x3 meter resolution") +``` + +--- +title: `r title_var` +--- + +This PDF-dashboard shows the status of your fields on a weekly basis. We will show this in different ways: + +1) The first way is with a general overview of field heterogeneity using ‘variation’ – a higher number indicates more differences between plants in the same field. +2) The second map shows a normal image of the latest week in colour, of the demo fields. +3) Then come the maps per field, which show the status for three weeks ago, two weeks ago, last week, and this week, as well as a percentage difference map between last week and this week. The percentage difference maps shows the relative difference in growth over the last week, with positive numbers showing growth, and negative numbers showing decline. +4) Below the maps are graphs that show how each pivot quadrant is doing, measured through the chlorophyll index. + + + +```{r data, message=FALSE, warning=FALSE, include=FALSE} +# get latest CI index +week_minus_1 <- as.numeric(week) -1 +week_minus_2 <- as.numeric(week) -2 +week_minus_3 <- as.numeric(week) -3 + +today_minus_1 <- as.character(ymd(today) - 7) +today_minus_2 <- as.character(ymd(today) - 14) +today_minus_3 <- as.character(ymd(today) - 21) + +# remove_pivots <- c("1.1", "1.12", "1.8", "1.9", "1.11", "1.14") +CI_quadrant <- readRDS(here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>% + rename(pivot_quadrant = Field) + +message("STOP - check ci name in layer") +CI <- brick(here(weekly_CI_mosaic, paste0("week_",week, "_2023.tif"))) %>% subset("CI") +CI_m1 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_1, "_2023.tif"))) %>% subset("CI") #%>% subset("CI") +CI_m2 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_2, "_2023.tif"))) %>% subset(6) #%>% subset("CI") +CI_m3 <- brick(here(weekly_CI_mosaic, paste0("week_",week_minus_3, "_2023.tif"))) %>% subset(6) #%>% subset("CI") + +last_week_dif_raster <- ((CI - CI_m1) / CI_m1) * 100 +last_week_dif_raster_abs <- (CI - CI_m1) +two_week_dif_raster_abs <- (CI - CI_m2) + + +AllPivots0 <-st_read(here(data_dir, "pivot_20210625.geojson")) +joined_spans <-st_read(here(data_dir, "spans2.geojson")) %>% st_transform(crs(AllPivots0)) + +pivots_dates <- readRDS(here(harvest_dir, "harvest_data_new")) %>% filter( + pivot %in% c("1.1", "1.2", "1.3", "1.4", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", + "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", + "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3") #without 1.6 +) +AllPivots <- merge(AllPivots0, pivots_dates, by = "pivot_quadrant") %>% + rename(pivot = pivot.x) #%>% select(-pivot.y) + +AllPivots_merged <- AllPivots %>% + group_by(pivot) %>% summarise() + +AllPivots_merged <- st_transform(AllPivots_merged, crs = proj4string(CI)) + +AllPivots_merged$pivot <- as.factor(AllPivots_merged$pivot) +AllPivots_merged$pivot <- ordered(AllPivots_merged$pivot, levels = c("1.1", "1.2", "1.3", "1.4", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12", "1.13", "1.14" , "1.16" , "1.17" , "1.18" ,"2.1", "2.2", "2.3" , "2.4", "2.5", "3.1", "3.2", "3.3", "4.1", "4.2", "4.3", "4.4", "4.5", "4.6", "5.1" ,"5.2", "5.3", "5.4", "6.1", "6.2", "DL1.1", "DL1.3")) + +pivot_names <- unique(CI_quadrant$pivot) + +``` + + +```{r eval=FALSE, include=FALSE} +pivot_stats_q <- cbind(AllPivots0, round(exact_extract(CI, AllPivots0, c("coefficient_of_variation", "mean"), default_value = -9999),2)) %>% + st_drop_geometry() %>% as_tibble() + +hetero_pivots0 <- merge(AllPivots, pivot_stats_q %>% dplyr::select(-hectares, -radius, -pivot), by = "pivot_quadrant") + +hetero_pivots <- hetero_pivots0 %>% #dplyr::filter(variable %in% "CV") %>% + mutate(class = case_when(coefficient_of_variation <= 0.001 ~ "Missing data", + coefficient_of_variation >= 0.002 & coefficient_of_variation < 0.1 ~ "Homogeneous", + coefficient_of_variation >= 0.1 & coefficient_of_variation < 0.2~ "Somewhat Homogeneous", + coefficient_of_variation >= 0.2 & coefficient_of_variation < 0.4 ~ "Somewhat Heterogeneous", + coefficient_of_variation >= 0.4 ~ "Heterogeneous")) %>% + mutate(class = as.factor(class)) +# hetero_pivots %>% filter(pivot == "1.3") +hetero_pivots$class <- factor(hetero_pivots$class, levels = c("Missing data", "Homogeneous","Somewhat Homogeneous", "Somewhat Heterogeneous", "Heterogeneous" )) +# hetero_pivots %>% select(pivot_quadrant, class, Age, coefficient_of_variation , mean) %>% view() + +# hetero_pivots %>% filter(class == "Somewhat Heterogeneous" ) %>% select(pivot_quadrant, class, Age, coefficient_of_variation , mean) + + + +Mypal <- c('#dcdcdc', '#008000','#8db600','#FFC300','#F22222') + +hetero_plot <- function(data){ + # map <- + tm_shape(data) + tm_polygons(col = "class", palette=Mypal) + + tm_text("pivot_quadrant", size = 1/2) + + tm_layout(main.title=paste0("Homogeneity of pivot quadrants, week ", week, " 2022"),main.title.position = "center")+ + tm_compass(position = c("center", "top")) + + tm_scale_bar(position = c("center", "top")) + + # print(map, width = 20, units = "cm") + +} + +``` +\newpage +```{r eval=FALSE, fig.height=7, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} +hetero_plot(hetero_pivots) +``` + + +```{r function, message=FALSE, warning=FALSE, include=FALSE} + +subchunkify <- function(g, fig_height=7, fig_width=5) { + g_deparsed <- paste0(deparse( + function() {g} + ), collapse = '') + + sub_chunk <- paste0(" + `","``{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=", fig_height, ", fig.width=", fig_width, ", echo=FALSE}", + "\n(", + g_deparsed + , ")()", + "\n`","`` + ") + + cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE)) +} + + + +ci_plot <- function(pivotName){ + # pivotName = "2.1" + pivotShape <- AllPivots_merged %>% terra::subset(pivot %in% pivotName) %>% st_transform(crs(CI)) + age <- AllPivots %>% dplyr::filter(pivot %in% pivotName) %>% st_drop_geometry() %>% dplyr::select(Age) %>% unique() + + AllPivots2 <- AllPivots %>% dplyr::filter(pivot %in% pivotName) + + singlePivot <- CI %>% crop(., pivotShape) %>% mask(., pivotShape) + + singlePivot_m1 <- CI_m1 %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m2 <- CI_m2 %>% crop(., pivotShape) %>% mask(., pivotShape) + singlePivot_m3 <- CI_m3 %>% crop(., pivotShape) %>% mask(., pivotShape) + + abs_CI_last_week <- last_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + abs_CI_two_week <- two_week_dif_raster_abs %>% crop(., pivotShape) %>% mask(., pivotShape) + + planting_date <- pivots_dates %>% dplyr::filter(pivot %in% pivotName) %>% ungroup() %>% dplyr::select(planting_date) %>% unique() + + joined_spans2 <- joined_spans %>% st_transform(crs(pivotShape)) %>% dplyr::filter(pivot %in% pivotName) %>% st_crop(., pivotShape) + + CImap_m2 <- create_CI_map(singlePivot_m2, AllPivots2, joined_spans2, show_legend= T, legend_is_portrait = T, week = week_minus_2, age = age -2) + CImap_m1 <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= F, legend_is_portrait = F, week = week_minus_1, age = age -1) + CImap <- create_CI_map(singlePivot_m1, AllPivots2, joined_spans2, show_legend= F, legend_is_portrait = F, week = week_minus_1, age = age ) + + + CI_max_abs_last_week <- create_CI_diff_map(abs_CI_last_week,AllPivots2, joined_spans2, show_legend = T, legend_is_portrait = T, week_1 = week, week_2 = week_minus_1, age = age) + CI_max_abs_two_week <- create_CI_diff_map(abs_CI_last_week, AllPivots2, joined_spans2, show_legend = T, legend_is_portrait = T, week_1 = week, week_2 = week_minus_2, age = age) + + tst <- tmap_arrange(CImap_m2, CImap_m1, CImap,CI_max_abs_last_week, CI_max_abs_two_week, nrow = 1) + + cat('

Pivot', pivotName, '- week', week, '-', age$Age, 'weeks after planting/harvest

') + + print(tst) + +} + + +create_CI_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week, age){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = c(0,0.5,1,2,3,4,5,6,7,Inf), palette = "RdYlGn",legend.is.portrait = legend_is_portrait ,midpoint = NA) + + tm_layout(main.title = paste0("\nMax CI week ", week,"\n", age, " weeks old"), + main.title.size = 0.7, legend.show = show_legend) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("pivot_quadrant", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +} + +create_CI_diff_map <- function(pivot_raster, pivot_shape, pivot_spans, show_legend = F, legend_is_portrait = F, week_1, week_2, age){ + tm_shape(pivot_raster, unit = "m")+ + tm_raster(breaks = c(-3,-2,-1,0,1,2, 3), palette = "RdYlGn",legend.is.portrait = legend_is_portrait ,midpoint = 0, title = "CI difference") + + tm_layout(main.title = paste0("CI change week ", week_1, "- week ",week_2, "\n", age," weeks old"), + main.title.size = 0.7, legend.show = show_legend) + + tm_shape(pivot_shape) + + tm_borders(lwd = 3) + tm_text("pivot_quadrant", size = 1/2) + + tm_shape(pivot_spans) + tm_borders(lwd = 0.5, alpha=0.5) +} + + +cum_ci_plot <- function(pivotName){ + + # pivotName = "1.17" + data_ci <- CI_quadrant %>% filter(pivot == pivotName) + data_ci2 <- data_ci %>% mutate(CI_rate = cumulative_CI/DOY, + week = week(Date))%>% group_by(pivot_quadrant) %>% + mutate(mean_rolling10 = rollapplyr(CI_rate , width = 10, FUN = mean, partial = TRUE)) #%>% + + date_preperation_perfect_pivot <- data_ci2 %>% group_by(season) %>% summarise(min_date = min(Date), + max_date = max(Date), + days = max_date - min_date) + + perfect_pivot_raw <- CI_quadrant %>% group_by(pivot) %>% filter(pivot == "5.1" & season == "2022") %>% + group_by(DOY) %>% summarise(cumulative_CI = mean(cumulative_CI)) %>% mutate(CI_rate = cumulative_CI/DOY) %>% + mutate(mean_rolling10 = rollapplyr(CI_rate , width = 10, FUN = mean, partial = TRUE)) + + unique_seasons <- unique(date_preperation_perfect_pivot$season) + + if(length(unique_seasons) == 3) { + unique_seasons <- unique_seasons[c(2,3)] + } else { + unique_seasons <- unique_seasons + } + + perfect_pivot <- perfect_pivot_raw + + for (s in unique_seasons) { + season_dates <- seq(from = date_preperation_perfect_pivot$min_date[date_preperation_perfect_pivot$season == s], + to = date_preperation_perfect_pivot$min_date[date_preperation_perfect_pivot$season == s] + nrow(perfect_pivot_raw) - 1, + by = "1 day") + col_name <- as.character(s) + perfect_pivot <- dplyr::bind_cols(perfect_pivot, tibble(!!col_name := season_dates)) + } + + perfect_pivot <- perfect_pivot %>% + pivot_longer(cols = -c("DOY", "cumulative_CI", "CI_rate", "mean_rolling10"), + names_to = "season", values_to = "Date") + + g <- ggplot() + + facet_wrap(~season, scales = "free_x") + + geom_line(data= data_ci2 %>% filter(season %in% unique_seasons), aes(Date, mean_rolling10, col = pivot_quadrant)) + + geom_line(data= perfect_pivot, aes(Date , mean_rolling10, col = "Model CI (p5.1 Data 2022, \n date x axis is fictive)"), lty="11",size=1) + + labs(title = paste("14 day rolling MEAN CI rate - Pivot ", pivotName))+ + # scale_y_continuous(limits=c(0.5,3), breaks = seq(0.5, 3, 0.5))+ + scale_x_date(date_breaks = "1 month", date_labels = "%m-%Y") + + theme(axis.text.x = element_text(angle = 60, hjust = 1)) + # options(repr.plot.width = 2, repr.plot.height = 2) + subchunkify(g, 3.2, 10) + +} + +``` + +```{r eval=FALSE, fig.height=7.2, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} + RGB_raster <- list.files(paste0(s2_dir,week),full.names = T, pattern = ".tiff", recursive = TRUE)[1] #use pattern = '.tif$' or something else if you have multiple files in this folder + + +RGB_raster <- brick(RGB_raster) +# RGB_raster <- brick(here("planet", paste0("week_",week, ".tif"))) +tm_shape(RGB_raster, unit = "m") + tm_rgb(r=1, g=2, b=3, max.value = 255) + + tm_layout(main.title = paste0("RGB image of the fields - week ", week), + main.title.position = 'center') + + tm_scale_bar(position = c("right", "top"), text.color = "white") + + + tm_compass(position = c("right", "top"), text.color = "white") + + tm_shape(AllPivots)+ tm_borders( col = "white") + + tm_text("pivot_quadrant", size = .6, col = "white") + +``` +\newpage + +```{r eval=FALSE, fig.height=7.2, fig.width=10, message=FALSE, warning=FALSE, include=FALSE} +tm_shape(CI, unit = "m")+ + tm_raster(breaks = c(0,0.5,1,2,3,4,5,6,7,Inf), palette = "RdYlGn", midpoint = NA,legend.is.portrait = F) + + tm_layout(legend.outside = TRUE,legend.outside.position = "bottom",legend.show = T, main.title = "Overview all fields (CI)")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") + + + +tm_shape(last_week_dif_raster_abs, unit = "m")+ + tm_raster(breaks = c(-3,-2,-1,0,1,2, 3), palette = "RdYlGn", midpoint = NA,legend.is.portrait = F) + + tm_layout(legend.outside = TRUE,legend.outside.position = "bottom",legend.show = F, main.title = "Overview all fields - CI difference")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") + + + +tm_shape(last_week_dif_raster, unit = "m")+ + tm_raster(breaks = c(-Inf,-50,-25,-5,5,25, Inf), palette = "RdYlGn", midpoint = NA,legend.is.portrait = T) + + tm_layout(legend.outside = TRUE,legend.outside.position = "right",legend.show = F, main.title = "Overview all fields - CI difference %")+ + tm_scale_bar(position = c("right", "top"), text.color = "black") + + + tm_compass(position = c("right", "top"), text.color = "black") + + tm_shape(AllPivots)+ tm_borders( col = "black") + + tm_text("pivot_quadrant", size = .6, col = "black") +``` + + +```{r plots_ci, echo=FALSE, fig.height=3.7, fig.width=10, message=FALSE, warning=FALSE, results='asis'} + # ci_plot("1.17") +# cum_ci_plot("1.17") +# x = 1 +# for(j in x){ +# coops <- Chemba_pivot_owners %>% filter(`OWNER update 18/6/2022` %in% c("chapo", "Lambane", "Canhinbe" )) +pivots <- AllPivots_merged %>% filter(pivot != "1.17") + +#%>% filter(pivot %in% c( "2.1", "2.2", "2.3", "2.4", "3.1", "3.2", "3.3", "4.4", "4.6" , "4.3", "4.5", "4.2", "4.1", "5.1", "5.2", "5.3", "5.4", "7.1", "7.2", "7.3" , "7.4", "7.5", "7.6" )) + +for(i in pivots$pivot) { + ci_plot(i) + cum_ci_plot(i) + } + +# lapply(pivots, function(pivot) { +# ci_plot(pivot) +# cum_ci_plot(pivot) +# }) + + #cat("\\newpage") +# } +``` + +```{r eval=FALSE, fig.height=10, fig.width=14, include=FALSE} +CI_all2 <- readRDS(here(cumulative_CI_vals_dir, "All_pivots_Cumulative_CI_whole_pivot_year.rds")) %>% + mutate(#line = substr(pivot, 1 , 1), + season = as.factor(season)) + +pivots_dates <- readRDS(here(harvest_dir, "harvest_data_new")) #%>% + +pvt_age <- pivots_dates %>% ungroup() %>% select(pivot, Age) %>% unique() +CI_all2 <- left_join(CI_all2, pvt_age , by = "pivot") %>% mutate(month = plyr::round_any((Age/4),2)) %>% + mutate(month = case_when(month > 16 ~ 18, + TRUE ~month)) %>% + group_by(pivot) %>% filter(Age == max(Age)) %>% ungroup() + +CI_all2$season <- ordered(CI_all2$season, levels = c("Data_2021", "Data_2022")) +# CI_all2 <- CI_all2 %>% mutate(season_order = as.integer(season)) +latest_model <- CI_all2 %>% group_by(pivot) %>% filter(season =="Data_2022") +# latest_model <- CI_all2 %>% group_by(pivot) %>% arrange(season, desc(DOY)) %>% slice(1) + +# CI_all2 <- CI_all %>% group_by(pivot, DOY ) %>% mutate(pivot_cumulative_CI = mean(cumulative_CI)) +# label_data <- CI_all2 %>% group_by(pivot) %>% arrange(season, desc(cumulative_CI)) %>% slice(1) %>% mutate(label = paste(pivot, " - ", round(cumulative_CI))) +label_data <- latest_model %>% arrange(season, desc(cumulative_CI)) %>% slice(1) %>% mutate(label = paste(pivot, " - ", round(cumulative_CI))) + +max_day <- label_data %>% group_by(pivot) %>% summarise(max_day = max(DOY)) + +ggplot(data= CI_all2%>% filter(season =="Data_2022"), aes(DOY, cumulative_CI, col = pivot)) + + facet_wrap(~month) + + geom_line() + + # scale_y_continuous(breaks = seq(0, max(label_data$cumulative_CI) + 100, by = 100)) + + labs(title = "Cumulative CI values over the year per pivot, split per 2-month age (rounded down)", x = "Days after harvest/planting (scale is per 2 weeks)", y = "Cumulative CI value", + color = "Line") + + geom_label_repel(data = label_data %>% filter(model %in% latest_model$model), aes(DOY, cumulative_CI, label = label), box.padding = 1, + # ylim = c(1300, NA), + max.overlaps = Inf + # segment.linetype = 4, + + # segment.curvature = -1e-20, + # arrow = arrow(length = unit(0.015, "npc")) + ) + + theme(legend.position="right", legend.text = element_text(size=8), legend.title = element_text(size = 8), + plot.title = element_text(size=19)) + + # geom_smooth()+ + guides(fill = guide_legend(nrow=2,byrow=TRUE)) + + scale_y_continuous(breaks=seq(0,max(label_data$cumulative_CI),100)) + + scale_x_continuous(breaks=seq(0,max(max_day$max_day),30)) + theme(axis.text.x = element_text(angle = 90)) + + labs(x = "Weeks")+ + theme(legend.position = "none") + +``` + +The below table shows estimates of the biomass if you would harvest them now. +```{r eval=FALSE, message=FALSE, warning=FALSE, include=FALSE} +CI_quadrant <- readRDS(here(cumulative_CI_vals_dir,"All_pivots_Cumulative_CI_quadrant_year_v2.rds")) %>% + rename( pivot_quadrant = Field)#All_pivots_Cumulative_CI.rds + +pivots_dates0 <- readRDS(here(harvest_dir, "harvest_data_new")) %>% ungroup() %>% unique() %>% + dplyr::select(pivot, pivot_quadrant, Tcha_2021, Tcha_2022 ) %>% + pivot_longer(cols = c("Tcha_2021", "Tcha_2022"), names_to = "Tcha_Year", values_to = "Tcha") %>% + filter(Tcha > 50) + +CI_and_yield <- left_join(CI_quadrant , pivots_dates0, by = c("pivot", "pivot_quadrant")) %>% filter(!is.na(Tcha)) %>% + group_by(pivot_quadrant) %>% slice(which.max(DOY)) %>% + dplyr::select(pivot, pivot_quadrant, Tcha_Year, Tcha, cumulative_CI, DOY) %>% + mutate(CI_per_day = cumulative_CI/ DOY) + +set.seed(20) +CI_and_yield_split <- initial_split(CI_and_yield, prop = 0.75, weight = pivot_quadrant) +CI_and_yield_test <- training(CI_and_yield_split) +CI_and_yield_validation <- testing(CI_and_yield_split) + + +predictors <- c( "cumulative_CI" , "DOY" ,"CI_per_day" ) +response <- "Tcha" +CI_and_yield_test <- as.data.frame(CI_and_yield_test) + +ctrl <- trainControl(method="cv", + savePredictions = TRUE, + allowParallel= TRUE, + number = 5, + verboseIter = TRUE) + +set.seed(202) +model_ffs_rf <- ffs( CI_and_yield_test[,predictors], + CI_and_yield_test[,response], + method="rf" , + trControl=ctrl, + importance=TRUE, + withinSE = TRUE, + tuneLength = 5, + na.rm = TRUE +) + +pred_ffs_rf <- + predict(model_ffs_rf, newdata = CI_and_yield_validation) %>% as.data.frame() %>% rename(predicted_Tcha = ".") %>% mutate( + pivot_quadrant = CI_and_yield_validation$pivot_quadrant, + pivot = CI_and_yield_validation$pivot, + Age_days = CI_and_yield_validation$DOY, + total_CI = round(CI_and_yield_validation$cumulative_CI, 0), + predicted_Tcha = round(predicted_Tcha, 0) + ) %>% dplyr::select(pivot , pivot_quadrant, Age_days, total_CI, predicted_Tcha) %>% + left_join(., CI_and_yield_validation, by = c("pivot", "pivot_quadrant")) %>% + filter(Age_days > 250) + +ggplot(pred_ffs_rf, aes(y = predicted_Tcha , x = Tcha , col = pivot )) + + geom_point() +geom_abline() + + scale_x_continuous(limits = c(50, 160))+ + scale_y_continuous(limits = c(50, 160)) + + labs(title = "Model trained and tested on historical results - RF") + +prediction_2023 <- CI_quadrant %>% filter(season == "Data_2023") %>% group_by(pivot_quadrant) %>% slice(which.max(DOY))%>% + mutate(CI_per_day = cumulative_CI/ DOY) + +pred_rf_2023 <- predict(model_ffs_rf, newdata=prediction_2023) %>% + as.data.frame() %>% rename(predicted_Tcha_2023 = ".") %>% mutate(pivot_quadrant = prediction_2023$pivot_quadrant, + pivot = prediction_2023$pivot, + Age_days = prediction_2023$DOY, + total_CI = round(prediction_2023$cumulative_CI,0), + predicted_Tcha_2023 = round(predicted_Tcha_2023, 0)) %>% + filter(Age_days > 300) %>% + dplyr::select(pivot ,pivot_quadrant, Age_days, total_CI, predicted_Tcha_2023)%>% + mutate(CI_per_day = round(total_CI/ Age_days, 1)) + +ggplot(pred_rf_2023, aes(total_CI , predicted_Tcha_2023 , col = pivot )) + + geom_point() + labs(title = "2023 data (still to be harvested) - Fields over 300 days old") +knitr::kable(pred_rf_2023) + +``` + +```{r eval=FALSE, include=FALSE} + +model_CI <-lm( + formula = cumulative_CI ~ DOY , + data = CI_and_yield_test +) +pivot_ = "4.4" +df4 = data.frame(pivot_, 365, NA) +names(df4)=c("pivot", "DOY", "cumulative_CI") +a <- CI_all %>% filter(season == "Data_2022", pivot == pivot_) %>% ungroup() %>% select(pivot, DOY, cumulative_CI) %>% + complete(DOY = seq.int(max(DOY), 365, 1), pivot = pivot_) %>% arrange(DOY) # complete(DOY = seq.int(max(DOY), 365, 1)) # rbind(.,df4) + +b <- predict(model_CI, a) %>% + as.data.frame() %>% slice(which.max(.)) %>% rename(cumulative_CI = ".") %>% mutate(DOY = 365) + +pred_CI_2022 <- predict(model, newdata=b ) %>% + as.data.frame() %>% rename(predicted_Tcha_365 = ".") %>% mutate(pivot = df4$pivot, + predicted_Tcha_365 = round(predicted_Tcha_365, 0), + Age_days = df4$DOY) + +pred_CI_2022 +``` + diff --git a/r_app/renv.lock b/r_app/renv.lock new file mode 100644 index 0000000..d93c94d --- /dev/null +++ b/r_app/renv.lock @@ -0,0 +1,2052 @@ +{ + "R": { + "Version": "4.1.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cran.rstudio.com" + } + ] + }, + "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "dcd1743af4336156873e3ce3c950b8b9" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-20", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "8dcfa99b14c296bc9f1fd64d52fd3ce7" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-55", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats", + "utils" + ], + "Hash": "c5232ffb549f6d7a04a152c34ca1353d" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "130c0caba175739d98f2963c6a407cf6" + }, + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "470851b6d5d0ac559e9d01bb352b4021" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "45f0398006e83a5b10b72a90663d8d8c" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "utils" + ], + "Hash": "22b546dd7e337f6c0c58a39983a496bc" + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "6e75b3884423e21eda89b424a98e091d" + }, + "abind": { + "Package": "abind", + "Version": "1.4-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods", + "utils" + ], + "Hash": "4f57884290cc75ab22f4af9e9d4ca862" + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "sys" + ], + "Hash": "e8a22846fff485f0be3770c2da758713" + }, + "backports": { + "Package": "backports", + "Version": "1.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "c39fbec8a30d23e721980b8afb31984c" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bit": { + "Package": "bit", + "Version": "4.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "f36715f14d94678eea9933af927bc15d" + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit", + "methods", + "stats", + "utils" + ], + "Hash": "9fe98599ca456d6552421db0d6772d8f" + }, + "blob": { + "Package": "blob", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods", + "rlang", + "vctrs" + ], + "Hash": "dc5f7a6598bb025d20d66bb758f12879" + }, + "broom": { + "Package": "broom", + "Version": "1.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "backports", + "dplyr", + "ellipsis", + "generics", + "glue", + "lifecycle", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyr" + ], + "Hash": "fd25391c3c4f6ecf0fa95f1e6d15378c" + }, + "bslib": { + "Package": "bslib", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "rlang", + "sass" + ], + "Hash": "56ae7e1987b340186a8a5a157c2ec358" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "c35768291560ce302c0a6589f92e837d" + }, + "callr": { + "Package": "callr", + "Version": "3.7.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "processx", + "utils" + ], + "Hash": "9b2191ede20fa29828139b9900922e51" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rematch", + "tibble" + ], + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" + }, + "class": { + "Package": "class", + "Version": "7.3-20", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "stats", + "utils" + ], + "Hash": "da09d82223e669d270e47ed24ac8686e" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "KernSmooth", + "R", + "class", + "e1071", + "grDevices", + "graphics", + "stats" + ], + "Hash": "bee651a42a89633eccb36dca9d9ab413" + }, + "cli": { + "Package": "cli", + "Version": "3.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "3177a5a16c243adc199ba33117bd9657" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.0-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "methods", + "stats" + ], + "Hash": "6baccb763ee83c0bd313460fdb8b8a84" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "memoise", + "rlang" + ], + "Hash": "bb097fccb22d156624fd07cd2894ddb6" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ed588261931ee3be2c700d22e94a29ab" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "methods", + "utils" + ], + "Hash": "8dc45fd8a1ee067a92b85ef274e66d6a" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "htmltools", + "jsonlite", + "lazyeval" + ], + "Hash": "6aa54f69598c32177e920eb3402e8293" + }, + "curl": { + "Package": "curl", + "Version": "4.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "022c42d49c28e95d69ca60446dbabf88" + }, + "data.table": { + "Package": "data.table", + "Version": "1.14.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "36b67b5adf57b292923f5659f5f0c853" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "R6", + "blob", + "cli", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "utils", + "vctrs", + "withr" + ], + "Hash": "d24305b92db333726aed162a2c23a147" + }, + "dichromat": { + "Package": "dichromat", + "Version": "2.0-0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats" + ], + "Hash": "16e66f2a483e124af5fc6582d26005f7" + }, + "digest": { + "Package": "digest", + "Version": "0.6.29", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "cf6b206a045a684728c3267ef7596190" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "generics", + "glue", + "lifecycle", + "magrittr", + "methods", + "pillar", + "rlang", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "dea6970ff715ca541c387de363ff405e" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "data.table", + "dplyr", + "glue", + "lifecycle", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "54ed3ea01b11e81a86544faaecfef8e2" + }, + "e1071": { + "Package": "e1071", + "Version": "1.7-9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "class", + "grDevices", + "graphics", + "methods", + "proxy", + "stats", + "utils" + ], + "Hash": "32885be243a29301c90d33db37c3aad8" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "699a7a93d08c962d9f8950b2d7a227f1" + }, + "exactextractr": { + "Package": "exactextractr", + "Version": "0.9.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods", + "raster", + "sf" + ], + "Hash": "146d8a90d297c46e9ac4b9cad4643124" + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "utils" + ], + "Hash": "f28149c2d7a1342a834b314e95e67260" + }, + "farver": { + "Package": "farver", + "Version": "2.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c98eb5133d9cb9e1622b8691487f11bb" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "tibble" + ], + "Hash": "1a0a9a3d5083d0d573c4214576f1e690" + }, + "fs": { + "Package": "fs", + "Version": "1.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "7c89603d81793f0d5486d91ab1fc6f1d" + }, + "gargle": { + "Package": "gargle", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "fs", + "glue", + "httr", + "jsonlite", + "rappdirs", + "rlang", + "rstudioapi", + "stats", + "utils", + "withr" + ], + "Hash": "cca71329ad88e21267f09255d3f008c2" + }, + "generics": { + "Package": "generics", + "Version": "0.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "177475892cf4a55865868527654a7741" + }, + "geojsonsf": { + "Package": "geojsonsf", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "geometries", + "jsonify", + "rapidjsonr", + "sfheaders" + ], + "Hash": "8d077646c6713838233e8710910ef92e" + }, + "geometries": { + "Package": "geometries", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp" + ], + "Hash": "be29054e97e756ade56d13a89c6d5243" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "3.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "MASS", + "R", + "cli", + "glue", + "grDevices", + "grid", + "gtable", + "isoband", + "lifecycle", + "mgcv", + "rlang", + "scales", + "stats", + "tibble", + "vctrs", + "withr" + ], + "Hash": "3a147ee02e85a8941aad9909f1b43b7b" + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "gargle", + "glue", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar", + "purrr", + "rlang", + "tibble", + "utils", + "uuid", + "vctrs", + "withr" + ], + "Hash": "c3a25adbbfbb03f12e6f88c5fb1f3024" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cellranger", + "cli", + "curl", + "gargle", + "glue", + "googledrive", + "httr", + "ids", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang", + "tibble", + "utils", + "vctrs" + ], + "Hash": "3b449d5292327880fc6cb61d0b2e9063" + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "graphics", + "grid", + "gtable", + "utils" + ], + "Hash": "7d7f283939f563670a697165b2cf5560" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grid" + ], + "Hash": "ac5c6baf7822ce8732b343f14c072c4d" + }, + "haven": { + "Package": "haven", + "Version": "2.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "cpp11", + "forcats", + "hms", + "lifecycle", + "methods", + "readr", + "rlang", + "tibble", + "tidyselect", + "vctrs" + ], + "Hash": "9b302fe352f9cfc5dcf0a4139af3a565" + }, + "here": { + "Package": "here", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "rprojroot" + ], + "Hash": "24b224366f9c2e7534d2344d10d59211" + }, + "highr": { + "Package": "highr", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "8eb36c8125038e648e5d111c0d7b2ed4" + }, + "hms": { + "Package": "hms", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "lifecycle", + "methods", + "pkgconfig", + "rlang", + "vctrs" + ], + "Hash": "b59377caa7ed00fa41808342002138f9" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "digest", + "ellipsis", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "ba0240784ad50a62165058a27459304a" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grDevices", + "htmltools", + "jsonlite", + "yaml" + ], + "Hash": "76147821cd3fcd8c4b04e1ef0498e7fb" + }, + "httr": { + "Package": "httr", + "Version": "1.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "curl", + "jsonlite", + "mime", + "openssl" + ], + "Hash": "7e5e3cbd2a7bc07880c94e22348fb661" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "openssl", + "uuid" + ], + "Hash": "99df65cfef20e525ed38c3d2577f7190" + }, + "isoband": { + "Package": "isoband", + "Version": "0.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "grid", + "utils" + ], + "Hash": "7ab57a6de7f48a8dc84910d1eca42883" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonify": { + "Package": "jsonify", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "rapidjsonr" + ], + "Hash": "f435875f0eb7de52ade944ed82ee9089" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "266a20443ca13c65688b2116d5220f76" + }, + "knitr": { + "Package": "knitr", + "Version": "1.39", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "stringr", + "tools", + "xfun", + "yaml" + ], + "Hash": "029ab7c4badd3cf8af69016b2ba27493" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "graphics", + "stats" + ], + "Hash": "3d5108641f47470611a32d0bdf357a72" + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-45", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "stats", + "utils" + ], + "Hash": "b64cdbb2b340437c4ee047a1f4c4377b" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + }, + "leafem": { + "Package": "leafem", + "Version": "0.2.0", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "leafem", + "RemoteUsername": "r-spatial", + "RemoteRef": "HEAD", + "RemoteSha": "0eaf8f4c2efcc59041b1e942f7cfe1b6d46ffc9b", + "Requirements": [ + "R", + "base64enc", + "geojsonsf", + "htmltools", + "htmlwidgets", + "leaflet", + "methods", + "png", + "raster", + "sf" + ], + "Hash": "9d9384e19965b9aa1bc2b68c9d9ebe7b" + }, + "leaflet": { + "Package": "leaflet", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "base64enc", + "crosstalk", + "htmltools", + "htmlwidgets", + "leaflet.providers", + "magrittr", + "markdown", + "methods", + "png", + "raster", + "scales", + "sp", + "stats", + "viridis" + ], + "Hash": "97fadb60ef6eb8524b9f6e2c4a69ee93" + }, + "leaflet.providers": { + "Package": "leaflet.providers", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "d3082a7beac4a1aeb96100ff06265d7e" + }, + "leafsync": { + "Package": "leafsync", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "htmlwidgets", + "leaflet", + "methods" + ], + "Hash": "819d7169c7d39f0f952473e943375da1" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "001cecbeac1cff9301bdc3775ee46a86" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "generics", + "methods", + "timechange" + ], + "Hash": "e25f18436e3efd42c7c590a1c4c15390" + }, + "lwgeom": { + "Package": "lwgeom", + "Version": "0.2-8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "sf", + "units" + ], + "Hash": "68b7afe010f5ddc3d5a5c8113018bb39" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7ce2733a9826b3aeb1775d56fd305472" + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "mime", + "utils", + "xfun" + ], + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-38", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Matrix", + "R", + "graphics", + "methods", + "nlme", + "splines", + "stats", + "utils" + ], + "Hash": "be3c61ffbb1e3d3b3df214d192ac5444" + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "broom", + "magrittr", + "purrr", + "rlang", + "tibble", + "tidyr", + "tidyselect", + "vctrs" + ], + "Hash": "4f50122dc256b1b6996a4703fecea821" + }, + "munsell": { + "Package": "munsell", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "colorspace", + "methods" + ], + "Hash": "6dfe8bf774944bd5595785e3229d8771" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-155", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "graphics", + "lattice", + "stats", + "utils" + ], + "Hash": "74ad940dccc9e977189a5afe5fcdb7ba" + }, + "openssl": { + "Package": "openssl", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "askpass" + ], + "Hash": "6d3bef2e305f55c705c674653c7d7d3d" + }, + "pillar": { + "Package": "pillar", + "Version": "1.9.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cli", + "fansi", + "glue", + "lifecycle", + "rlang", + "utf8", + "utils", + "vctrs" + ], + "Hash": "15da5a8412f317beeee6175fbc76f4bb" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "01f28d4278f15c76cddbea05899c5d6f" + }, + "png": { + "Package": "png", + "Version": "0.1-7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "03b7076c234cb3331288919983326c55" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" + }, + "processx": { + "Package": "processx", + "Version": "3.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "ps", + "utils" + ], + "Hash": "a33ee2d9bf07564efb888ad98410da84" + }, + "progress": { + "Package": "progress", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "crayon", + "hms", + "prettyunits" + ], + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" + }, + "proxy": { + "Package": "proxy", + "Version": "0.4-26", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "utils" + ], + "Hash": "50b405c6419e921b9e9360cc9ebbcf2d" + }, + "ps": { + "Package": "ps", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "eef74b13f32cae6bb0d495e53317c44c" + }, + "purrr": { + "Package": "purrr", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "lifecycle", + "magrittr", + "rlang", + "vctrs" + ], + "Hash": "d71c815267c640f17ddbf7f16144b4bb" + }, + "ragg": { + "Package": "ragg", + "Version": "1.2.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "systemfonts", + "textshaping" + ], + "Hash": "690bc058ea2b1b8a407d3cfe3dce3ef9" + }, + "rapidjsonr": { + "Package": "rapidjsonr", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "88b9f48c93d17cdb811b54079a6a414f" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "raster": { + "Package": "raster", + "Version": "3.5-15", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods", + "sp", + "terra" + ], + "Hash": "70cf51235e017702ed77427797572ef0" + }, + "readr": { + "Package": "readr", + "Version": "2.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "cli", + "clipr", + "cpp11", + "crayon", + "hms", + "lifecycle", + "methods", + "rlang", + "tibble", + "tzdb", + "utils", + "vroom" + ], + "Hash": "b5047343b3825f37ad9d3b5d89aa1078" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cellranger", + "cpp11", + "progress", + "tibble", + "utils" + ], + "Hash": "2e6020b1399d95f947ed867045e9ca17" + }, + "rematch": { + "Package": "rematch", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tibble" + ], + "Hash": "76c9e04c712a05848ae7a23d2f170a40" + }, + "renv": { + "Package": "renv", + "Version": "0.17.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "4543b8cd233ae25c6aba8548be9e747e" + }, + "reprex": { + "Package": "reprex", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "callr", + "cli", + "clipr", + "fs", + "glue", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "rstudioapi", + "utils", + "withr" + ], + "Hash": "d66fe009d4c20b7ab1927eb405db9ee2" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.14", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bslib", + "evaluate", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "stringr", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "31b60a882fabfabf6785b8599ffeb8ba" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "1de7ab598047a87bba48434ba35d497d" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "690bd2acc42a9166ce34845884459320" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "httr", + "lifecycle", + "magrittr", + "rlang", + "selectr", + "tibble", + "withr", + "xml2" + ], + "Hash": "a4a5ac819a467808c60e36e92ddf195e" + }, + "s2": { + "Package": "s2", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "wk" + ], + "Hash": "f1cbe03bb3346f8e817518ffa20f9f5a" + }, + "sass": { + "Package": "sass", + "Version": "0.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "f37c0028d720bab3c513fd65d28c7234" + }, + "scales": { + "Package": "scales", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "RColorBrewer", + "farver", + "labeling", + "lifecycle", + "munsell", + "rlang", + "viridisLite" + ], + "Hash": "906cb23d2f1c5680b8ce439b44c6fa63" + }, + "selectr": { + "Package": "selectr", + "Version": "0.4-2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "R6", + "methods", + "stringr" + ], + "Hash": "3838071b66e0c566d55cc26bd6e27bf4" + }, + "sf": { + "Package": "sf", + "Version": "1.0-13", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "DBI", + "R", + "Rcpp", + "classInt", + "grDevices", + "graphics", + "grid", + "magrittr", + "methods", + "s2", + "stats", + "tools", + "units", + "utils" + ], + "Hash": "8fb4839843abc03528ff9f86424d6acd" + }, + "sfheaders": { + "Package": "sfheaders", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "Rcpp", + "geometries" + ], + "Hash": "c1bd5fbd6bed3c16a20df15d9bc20c55" + }, + "sp": { + "Package": "sp", + "Version": "1.4-6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "grid", + "lattice", + "methods", + "stats", + "utils" + ], + "Hash": "ce8613f4e8c84ef4da9eba65b874ebe9" + }, + "stars": { + "Package": "stars", + "Version": "0.5-5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "abind", + "classInt", + "lwgeom", + "methods", + "parallel", + "rlang", + "sf", + "units" + ], + "Hash": "b116254371e0d6681ab063bae82f0ece" + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "bba431031d30789535745a9627ac9271" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "90b28393209827327de889f49935140a" + }, + "terra": { + "Package": "terra", + "Version": "1.5-17", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp", + "methods" + ], + "Hash": "6c9f036bad848c41d12be5071b72fa53" + }, + "textshaping": { + "Package": "textshaping", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11", + "systemfonts" + ], + "Hash": "1ab6223d3670fac7143202cb6a2d43d5" + }, + "tibble": { + "Package": "tibble", + "Version": "3.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "fansi", + "lifecycle", + "magrittr", + "methods", + "pillar", + "pkgconfig", + "rlang", + "utils", + "vctrs" + ], + "Hash": "a84e2cc86d07289b3b6f5069df7a004c" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "cpp11", + "dplyr", + "glue", + "lifecycle", + "magrittr", + "purrr", + "rlang", + "stringr", + "tibble", + "tidyselect", + "utils", + "vctrs" + ], + "Hash": "e47debdc7ce599b070c8e78e8ac0cfcf" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang", + "vctrs", + "withr" + ], + "Hash": "79540e5fcd9e0435af547d885f184fd5" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "broom", + "cli", + "conflicted", + "dbplyr", + "dplyr", + "dtplyr", + "forcats", + "ggplot2", + "googledrive", + "googlesheets4", + "haven", + "hms", + "httr", + "jsonlite", + "lubridate", + "magrittr", + "modelr", + "pillar", + "purrr", + "ragg", + "readr", + "readxl", + "reprex", + "rlang", + "rstudioapi", + "rvest", + "stringr", + "tibble", + "tidyr", + "xml2" + ], + "Hash": "c328568cd14ea89a83bd4ca7f54ae07e" + }, + "timechange": { + "Package": "timechange", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "8548b44f79a35ba1791308b61e6012d7" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.39", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "xfun" + ], + "Hash": "29f67ab15405b390b90e56ff22198ead" + }, + "tmap": { + "Package": "tmap", + "Version": "3.3-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "abind", + "classInt", + "grid", + "htmltools", + "htmlwidgets", + "leafem", + "leaflet", + "leafsync", + "methods", + "rlang", + "sf", + "stars", + "stats", + "tmaptools", + "units", + "utils", + "viridisLite", + "widgetframe" + ], + "Hash": "7c1c0624e51105988b579d77289cea7b" + }, + "tmaptools": { + "Package": "tmaptools", + "Version": "3.1-1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "RColorBrewer", + "XML", + "dichromat", + "grid", + "lwgeom", + "magrittr", + "methods", + "sf", + "stars", + "stats", + "units", + "viridisLite" + ], + "Hash": "dfcb77371df343b663d6668d2d63ac35" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cpp11" + ], + "Hash": "b2e1cbce7c903eaf23ec05c58e59fb5e" + }, + "units": { + "Package": "units", + "Version": "0.8-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "Rcpp" + ], + "Hash": "6c374b265ba437f8d384ec7a313edd96" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "c9c462b759a5cc844ae25b5942654d13" + }, + "uuid": { + "Package": "uuid", + "Version": "1.1-0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "f1cb46c157d080b729159d407be83496" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "d0ef2856b83dc33ea6e255caf6229ee2" + }, + "viridis": { + "Package": "viridis", + "Version": "0.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "ggplot2", + "gridExtra", + "stats", + "viridisLite" + ], + "Hash": "ee96aee95a7a563e5496f8991e9fde4b" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "55e157e2aa88161bdb0754218470d204" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bit64", + "cli", + "cpp11", + "crayon", + "glue", + "hms", + "lifecycle", + "methods", + "progress", + "rlang", + "stats", + "tibble", + "tidyselect", + "tzdb", + "vctrs", + "withr" + ], + "Hash": "8318e64ffb3a70e652494017ec455561" + }, + "widgetframe": { + "Package": "widgetframe", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "htmlwidgets", + "magrittr", + "purrr", + "tools", + "utils" + ], + "Hash": "0ee89e6cb58182d39b30a5b506e04808" + }, + "withr": { + "Package": "withr", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "stats" + ], + "Hash": "c0e49a9760983e81e55cdd9be92e7182" + }, + "wk": { + "Package": "wk", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d6bc0432436a0aefbf29d5de8588b876" + }, + "xfun": { + "Package": "xfun", + "Version": "0.31", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats", + "tools" + ], + "Hash": "a318c6f752b8dcfe9fb74d897418ab2b" + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "40682ed6a969ea5abfd351eb67833adc" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "458bb38374d73bf83b1bb85e353da200" + }, + "zoo": { + "Package": "zoo", + "Version": "1.8-12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "graphics", + "lattice", + "stats", + "utils" + ], + "Hash": "5c715954112b45499fb1dadc6ee6ee3e" + } + } +} diff --git a/r_app/renv/.gitignore b/r_app/renv/.gitignore new file mode 100644 index 0000000..0ec0cbb --- /dev/null +++ b/r_app/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/r_app/renv/activate.R b/r_app/renv/activate.R new file mode 100644 index 0000000..c5d5405 --- /dev/null +++ b/r_app/renv/activate.R @@ -0,0 +1,1180 @@ + +local({ + + # the requested version of renv + version <- "0.17.3" + attr(version, "sha") <- NULL + + # the project directory + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + if (!enabled) + return(FALSE) + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + remote <- if (!is.null(description[["RemoteSha"]])) { + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + } else { + paste("renv", description[["Version"]], sep = "@") + } + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = description[["RemoteSha"]] + ) + + fmt <- paste( + "renv %1$s was loaded from project library, but this project is configured to use renv %2$s.", + "- Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile.", + "- Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library.", + sep = "\n" + ) + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- catch(renv_json_read_jsonlite(file, text)) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- catch(renv_json_read_default(file, text)) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% read(file), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% read(file), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/smartcane.sh b/smartcane.sh new file mode 100755 index 0000000..0bddccf --- /dev/null +++ b/smartcane.sh @@ -0,0 +1,38 @@ +#!/bin/bash + + +# Definieer de directories die aangemaakt moeten worden +#declare -a dirs=( + #"laravel_app/storage/app/extracted_ci/cumulative_vals" + #"laravel_app/storage/app/chemba/merged_tif" + #"laravel_app/storage/app/chemba/merged_virtual" + #"laravel_app/storage/app/chemba/single_images" +#) +# +## Loop door de directories en maak ze aan als ze nog niet bestaan, +## of maak ze leeg als ze al bestaan +#for dir in "${dirs[@]}"; do + #if [ ! -d "$dir" ]; then + #mkdir -p "$dir" + #chmod -R 775 "$dir" + #echo "Directory $dir is aangemaakt en bijgewerkt." + #else + ## Verwijder alle inhoud binnen de bestaande directory + #find "$dir" -mindepth 1 -delete + #echo "Inhoud van directory $dir is verwijderd." + #fi +#done +## Runnen van Jupyter Notebook +#jupyter nbconvert --execute --to script --stdout python_app/Chemba_download.ipynb +## Runnen van R scripts +# Kopieer de excel file met harvesting data en maak directory aan indien nodig +#mkdir -p laravel_app/storage/app/harvesting_data +#cp "Current - Pivots planting date and harevsting data.xlsx" "laravel_app/storage/app/harvesting_data/" +#Rscript r_app/1_harvest_data_EcoFarm_v2.R +#cp "pivot_20210625.geojson" "laravel_app/storage/app/Data" +#Rscript r_app/2_CI_data_prep.R +# +## Runnen van Rmd bestand +# -e betekent "evalueren" en -i specificeert de input file +Rscript -e "rmarkdown::render('r_app/CI_Report_dashboard_planet.Rmd', 'all')" +