From f50cebff87634de37c228f47803c74c2f1ffd933 Mon Sep 17 00:00:00 2001 From: Timmy O'Mahony Date: Sat, 8 Feb 2020 13:52:05 +0000 Subject: [PATCH] Added backup pruning (#19) * Added backup pruning (#18) * Added settings for pruning * Separated the date parsing logic * Refactored to accomodate pruning * Refactored to accomodate pruning * Tided up the prune functions * Updated readme * Updated the readme * Added emojis * Resized logos * Updated readme * Updated the readme * Fixed some bugs * Updated recursive functions * Removed logging and updated gitignore * Updated the changelog --- .gitignore | 1 + CHANGELOG.md | 7 + README.md | 136 +++++- resources/img/backup-screenshot.png | Bin 0 -> 22090 bytes resources/img/plugin-logo.png | Bin 153032 -> 53084 bytes resources/img/pruning-screenshot.png | Bin 0 -> 48282 bytes src/Sync.php | 10 +- src/assets/SyncSettingAsset.php | 21 + .../{SyncAsset.php => SyncUtilityAsset.php} | 2 +- src/assets/dist/SyncSetting.js | 21 + .../controllers/DatabaseController.php | 57 ++- src/console/controllers/VolumeController.php | 114 +++++ src/console/controllers/VolumesController.php | 78 ---- src/controllers/SyncController.php | 88 ++-- src/exceptions/ProviderException.php | 2 +- src/helpers/ZipHelper.php | 83 ++-- src/models/Settings.php | 21 +- src/queue/CreateDatabaseBackupJob.php | 20 + src/queue/CreateVolumeBackupJob.php | 20 + src/queue/PruneDatabaseBackupsJob.php | 20 + src/queue/PruneVolumeBackupsJob.php | 20 + ...baseJob.php => PullDatabaseBackupsJob.php} | 7 +- ...olumesJob.php => PullVolumeBackupsJob.php} | 7 +- ...baseJob.php => PushDatabaseBackupsJob.php} | 7 +- ...olumesJob.php => PushVolumeBackupsJob.php} | 7 +- src/services/SyncService.php | 395 ++++++++++++++---- src/services/providers/S3Provider.php | 131 ++++-- .../{settings.html => settings.twig} | 62 ++- src/utilities/SyncUtility.php | 93 ++--- 29 files changed, 1048 insertions(+), 382 deletions(-) create mode 100644 resources/img/backup-screenshot.png create mode 100644 resources/img/pruning-screenshot.png create mode 100644 src/assets/SyncSettingAsset.php rename src/assets/{SyncAsset.php => SyncUtilityAsset.php} (90%) create mode 100644 src/assets/dist/SyncSetting.js create mode 100644 src/console/controllers/VolumeController.php delete mode 100644 src/console/controllers/VolumesController.php create mode 100644 src/queue/CreateDatabaseBackupJob.php create mode 100644 src/queue/CreateVolumeBackupJob.php create mode 100644 src/queue/PruneDatabaseBackupsJob.php create mode 100644 src/queue/PruneVolumeBackupsJob.php rename src/queue/{PullDatabaseJob.php => PullDatabaseBackupsJob.php} (70%) rename src/queue/{PullVolumesJob.php => PullVolumeBackupsJob.php} (71%) rename src/queue/{PushDatabaseJob.php => PushDatabaseBackupsJob.php} (70%) rename src/queue/{PushVolumesJob.php => PushVolumeBackupsJob.php} (71%) rename src/templates/{settings.html => settings.twig} (61%) diff --git a/.gitignore b/.gitignore index a24a7ee..1e8ba33 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,7 @@ composer.lock *.esproj *.sublime-workspace *.sublime-project +craft-test.code-workspace *.tmproj *.tmproject .vscode/* diff --git a/CHANGELOG.md b/CHANGELOG.md index afffd2a..6ffc04b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,3 +89,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p - Add missing console command - Updated docs + +## 1.1.0 - 2020-02-08 + +### Changed + +- Added backup pruning +- Bugfixes diff --git a/README.md b/README.md index 5e13c99..8cdc1fb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Backup and restore your database and volume assets across environments from the - Craft CMS 3 or later on Linux or MacOS (untested on Windows as of yet) - A private AWS S3 bucket for backups -## Installation +## 💾 Installation To install the plugin, follow these instructions. @@ -22,12 +22,12 @@ To install the plugin, follow these instructions. 2. Then tell Composer to load the plugin: ```sh - $ composer require weareferal/env-sync + composer require weareferal/env-sync ``` 3. In the Control Panel, go to Settings → Plugins and click the *Install* button for Craft Env Sync. -## Overview +## 🏔 Overview Craft Env Sync is a plugin that makes it possible to sync your database and volume assets across numerous environments from the comfort of the Craft Control Panel. This makes it much easier to move your site from local development to staging and onto production. @@ -42,13 +42,17 @@ This plugin uses AWS S3 (more providers to come soon) as the "single source of t For more information read our blog post on ["Syncing your DB and assets across environments in Craft 3"](https://weareferal.com/tldr/syncing-your-db-and-assets-across-environments-in-craft-3/) or get in touch at [timmy@weareferal.com](mailto:timmy@weareferal.com) -This plugin is inspired by ![Andrew Welsch's `craft-scripts` library](https://github.com/nystudio107/craft-scripts) who also [has a great blog post on syncing you DB and assets in Craft](https://nystudio107.com/blog/database-asset-syncing-between-environments-in-craft-cms). +This plugin is inspired by [Andrew Welsch's `craft-scripts` library](https://github.com/nystudio107/craft-scripts) who also [has a great blog post on syncing you DB and assets in Craft](https://nystudio107.com/blog/database-asset-syncing-between-environments-in-craft-cms). -## Configuration +## 🔧 Configuration + +Configuration is done through the dedicated "Sync" settings panel. + +### Provider ![Craft Env Sync Setting Screenshot](resources/img/settings-screenshot.png) -Configuration is done through the dedicated "Sync" settings panel. The details entered here correspond to your AWS S3 account and bucket that you want to use for backups. It's recommended to set up a new IAM user that has programmatic access (meaning via a acces/secret key) to a private S3 bucket. +The details entered here correspond to your AWS S3 account and bucket that you want to use for backups. It's recommended to set up a new IAM user that has programmatic access (meaning via a acces/secret key) to a private S3 bucket. Once you have set this bucket up, you can either enter your AWS S3 details directly into the setting page, or you can use environment variables via your `.env` file (this is the recommended approach as seen in the screenshot above). This latter approach is more portable and secure as it prevents any private access/secret key values being included in files that you might commit to Github. Furthermore is means these variables can be reused in other plugins etc. @@ -57,20 +61,20 @@ Here is an example portion of a `.env` file: ```sh ... -AWS_ACCESS_KEY = -AWS_SECRET_KEY = +AWS_ACCESS_KEY = +AWS_SECRET_KEY = AWS_REGION = "us-west-2" AWS_BUCKET_NAME = "feral-backups" AWS_BUCKET_PREFIX = "craft-backups/my-site" ``` -## Usage +## 💻 Usage ### Control Panel ![Craft Env Sync Utilities Screenshot](resources/img/utilities-screenshot.png) -Once you have entered your settings variables you should be able to use the "sync" tab on the "utilities" section of the control panel. +Once you have entered your settings variables you should be able to use the *Sync* tab on the *Utilities* section of the control panel. There are two broad sections: one for the database and one for volume assets. Each section has four options to create a local backup, push that local backup to S3, pull all remote backups _from_ S3 and finally to restore a particular backup. @@ -80,34 +84,122 @@ There are also console commands available for creating, pushing and pulling back ```sh - env-sync/database Sync database backups - env-sync/database/create-backup Create a local database backup + env-sync/database/create Create a local database backup + env-sync/database/prune Prune database backups env-sync/database/pull Pull remote database backups from cloud env-sync/database/push Push local database backups to cloud -- env-sync/volumes Sync volumes backup - env-sync/volumes/create-backup Create a local volumes backup - env-sync/volumes/pull Pull remote volume backups from cloud - env-sync/volumes/push Push local volume backups to cloud +- env-sync/volume Sync volumes backup + env-sync/volume/create Create a local volumes backup + env-sync/volume/prune Prune volume backups + env-sync/volume/pull Pull remote volume backups from cloud + env-sync/volume/push Push local volume backups to cloud ``` For example: ```sh -./craft env-sync/database/create-backup +./craft env-sync/database/create ``` These commands can be used alongside cron or your deployment scripts to automatically/periodically create backups. -## Functionality +## 📝 Functionality + +![Image of backups](resources/img/backup-screenshot.png) All local backups are stored in the existing `storage/backups` folder that Craft uses for its own database backup script. -For database backups and restorations we use the existing Craft scripts - they are just included in our dashboard as an easier consolodated interface. +- Database backups are created in a similar manner to the native Craft backup utility. In fact, the plugin uses this script behind-the-scenes, it just uses a slightly different naming scheme. +- For volume assets backups, we simply create a versioned zip file containing the handles of all volume assets currently saved in the system. + +All backups have the following filename structure: + +```sh +my_site_dev_200202_200020_yjrnz62yj4_v3.3.20.1.sql +``` + +Which includes: + +- Your site name +- Your current environment +- Date & time of backup +- Random 10 character string +- Craft version + +It's important not to manually rename these files as the plugin relies on this structure. + +To create new backups and push/pull backups to the cloud you can use the "Sync" utility + +### Queue + +You can choose to use the Craft queue to perform create, push and pull operations from the CP utilities section. To enable use of the queue, toggle the "Use Queue" setting. + +#### Control Panel errors + +When not using the queue, if there is an issue pulling/pushing a backup you will get feedback (an alert box). You won't get the same feedback when using the queue. Instead it will look like the operation has been successful. To see if the operation was actually successul you'll need to check the queue manually. + +#### CLI commands and the queue + +The CLI commands ignore the queue setting. In other words, they will always run synchrously. This is by design as it's likely you will want to see the results of these operations if they are part of your crontab or deployment script. + +### Deleting/Pruning old backups + +![Pruning settings](resources/img/pruning-screenshot.png) + +Env Sync supports pruning/deleting of old backups. To enable this feature toggle the "Prune Backup" setting. When you toggle this setting you will see a number of inputs for controlling the number of backups to be retained for a number of backup periods: daily, weekly, monthly, yearly. By default Env Sync will keep: + +- The 14 most recent daily backups +- The earliest backups of the 4 most recent weeks +- The earliest backups of the 6 most recent months +- The earliest backups of the 3 most recent years + +Bear in mind that depending on how many backups you have, some of these might overlay. For example, a backup that is retained as part of the 4 most recent weekly backups might also be one of the 6 most recent monthly backups too. + +When enabled, backups will be pruned whenever a new backup is created via the Control Panel. Backups will be pruned independently. In other words, if you create a database backup, only the old database backups will be deleted, not the volume backups. You can also prune database or volume backups independently on the command line: + +```sh +./craft env-sync/database/prune +./craft env-sync/volume/prune +``` + +Bear in mind these commands _will_ respect the settings. In other words, you won't be able to prune backups via the command line if the setting in the control panel is disabled. + +Also note that the `./craft env-sync/[database|volume]/create` command does not automatically run the `prune` command (unlike the control panel). + +### Automating backups + +There is no built-in way to automate backups (periodic queue jobs are't something supported by the Craft queue). That said, it's very easy to automate backups either via cron or your own deployment script (if using Forge for example). + +#### Cron + +Here is an example daily cron entry to backup and prune daily at 01:00: + +```cron +00 01 * * * /path/to/project/craft env-sync/database/prune +05 01 * * * /path/to/project/craft env-sync/database/create +10 01 * * * /path/to/project/craft env-sync/volume/prune +15 01 * * * /path/to/project/craft env-sync/volume/create +``` + +### Providers + +The plugin has been built with the ability to add new providers relatively easily using a backend system. Currently the only provider available is AWS S3. + +If you require another provider, please leave an issue on Github. + +## 🚨 Troubleshooting + +If you are getting errors while pushing/pulling/creating/restoring or pruning, the first thing to check is the Craft logs at `storage/logs/web.log`. + +### Credentials + +For pushing and pulling, the most likely issue is with your credentials, so double check that those are OK. -For volume assets backups, we simply create a versioned zip file containing the handles of all volume assets currently saved in the system. Bear in mind if you have a large number of assets this process may take some time and take up a significant amount of storage. +### Memory limit creating volumes -## Troubleshooting +When you create a new volume backup, it's possible that your PHP memory limit will cause the process to crash. Make sure your memory limit is > than the volume folder you are trying to backup. -If you are getting errors when you try to pull/push databases or assets, the first thing to check is the Craft logs at `storage/logs/web.log`. All errors should be logged here. The most likely issue is with your credentials, so double check that those are OK. +## 📞 Credits and support -Brought to you by [Feral](https://weareferal.com). Any issues email [timmy@weareferal.com](mailto:timmy@weareferal.com?subject=Craft%20Env%20Sync%20Question) +Brought to you by [Feral](https://weareferal.com). Any problems email [timmy@weareferal.com](mailto:timmy@weareferal.com?subject=Craft%20Env%20Sync%20Question) or leave an issue on Github. diff --git a/resources/img/backup-screenshot.png b/resources/img/backup-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7afdbafad020dc7f6c118dbd89979de2e81fc4ac GIT binary patch literal 22090 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 literal 0 HcmV?d00001 diff --git a/resources/img/plugin-logo.png b/resources/img/plugin-logo.png index 59b85a2a4432f7ae055e96556f6f88afa4744764..26ab060627a68fc41c56a16580092bb1a51d7506 100644 GIT binary patch literal 53084 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 og5RZl1)a1BGYc#|Qlso&{hsSC+=>Px# literal 153032 zcmeEuhd*2Y_rFeEsta9cjkeUNT{BwLuGS_(iz128+MB+$RTQ;JiqzwmE&+~j8!XMn%WIJ~87z+yvo3@s^Aqxv@ zCkxAd{v-Q=|LL{oQek1)_YYJ}?SZ?Y=G`mW8fvl<^0Km`l424pEH`33V>@oDKRibQ zIlSI-dSUxmLc(5x|DL{cLhOUMh8v-6ttcBL(JU!OthW5 zyOeQ7jAA$^;aMtHn6wRN`|-M1)g)~pKNEK0htQ8y>>Jop4p3 zmp=Pu?D5;vi#%4JrjxljmRN(99JO_e`K$%Q8iXZ&+CPmzCeEC;$ja2T7idh~-ldo+ zD~yYox~|-9i+^0rP^EL8TY9zV>vaAl|3{TC8iffNDj`3-yOsspO4%#fZWBbHAGmLi zzKCX($v+eUWHN-p!7{-ynPgsmv*63D(QRF6zM&U)-2h z>N9DCARmuV1m?wUN&D<@Nki$=>Pyv)sBsN3L+gXHDUsr>1JUkR500jUOk4nGEm~dn zUq~5{=AxW>k2>rwb?TPB+`)^N?VL_}WE2khV;I4c^{#XU?w07Y1iiGDwXCeUK-fHS zwRYxRTy*+2dTL5wFMR$zYC&{7`~SYF8wsi7{{2nJP1Wxwf1lTJTzSg+`~3T{Q=bm} zK7V@X$nd`3=b!c;ocn#sVzqC-_y5j|S)MEY@7(PFF3<9Ri?bIE|NlkKddDqLB2DFY z;)PJoJy%@Fm}v-0wpr(`c^5P?^*c$Pg881Z?)0d$6Bj0vc@&g3&T{n!p8NeKj(@-R zcTiInh`1YtYm26?LFCwNvds_w_jaAD#`lw3bCcJX7b0En!Mb+I5KEjcFqNd6B``#5Zhf73aw&tA;eqZM4alks>F>J)cx>Z9ZZ)pf z2e)fw>|?rASIHzgE44B=jIE=^3~6{3255&Vz5lPQKC}w zpAR0Kt8=Aw?XE4LTvJ8mBPwWRy*Vyy+BgAEf@yBe6v2gOAbqbq1IO_4o;|Q2;rW0? zqc~x8oU|OKFTos%qCFOk?M=9z(db_j_CMq6h|zW2>lo^$LA%S2pG^+gx(E`Jbxk8W z+X?&1zEn`OGACx|S3MWC7h}5w@AR;Uv&j-+fj)=s%Zctf6{QXG zYS&X{|FagKaDbx>&JxGK8B6cXBb6QC4kbs|lGF?DrmDHWTr!eWcV9j`kL2A3{WX99 z7y#x8r2pt2m5k{+kMN{FZ0Vy=CnPQq1hCFobJ%;>LI>(Lw`16)Ki-*p2rQ99O{zC> zy?|_4RDUu4YPhEpOgpiu*JsnVK0--gb27)GdpKZ6J$Qb%^^Y|?K(IPfcMUqy*Vm@K zL^Vg`G%sd0CYho&&;d>^L#BCiD3TLagstmszJ znpPMcD`*jxD|9hFR22Fa&jCe5NZ*S@Odn?#kJ%BR82y(!A^s^HhHvMao|6GCia_0a#;Qo)YDN0#w0g)a2{+2olW)Q31l$O*8Yj(?>u+E zNBa*&Y4)vcH`d#h^uapX(9TUd$&Q0VbxV_mI@5G+OXf?v>b+A?XkWLqXE=)Y`Xsfjx>{A}KDcIsrzZnu)4kpYe%BZu+A zy|SnH!q^JEE@)WOa}NKYUk#T5$Gx)0TK48ZI-G4zSYvE_r`x_J{|(!-z=dLv9ZT(8 z%2;X4Dy+mbn^U{&TvbaX_(@ z<}T|~Di{@>eRaCexuoyBhC)TeNDrp|BERm4btbFLQ=^sU-;3m}2wciP6SwmfwOJo_ z?IxDZvotxkK0?MG?&fNkTx2dkof>BjDfXz*Fy-s_*b>x?oy_ILbc->+gobJUT_QTL zL>Thi%~${JyloT6Tk@urTcz){j4EO5C81ZPXh*7EXo-gyqJ z?u^M7s)_#txYD-mg0rYsq=3c6O34dth?Y(+N;gawiE79Phjvd$SQJ4F!RB0OZKEaE z!9Ore25e=oT3lq91^pWC4tffjoW@Fc4tTwTRc4er^pi8m5xp1}MFr`3zrq_04|S1- z?u#6s*&j|UiCPvh*XiV(`Z)-D&D%fe2Z;pI@69jFXpplVN;r@nBgQ?ct%7?)U1}bdx#5Y=}X!C7)1I&c)}h$q$2;U6pPJZ|yqx3;*ZX zr`~)|NyMLB!GY_us7Z)H&JQC4BQfxh_+iBe_{TuFXL4^`6*M9faid1t-8~sEv$|sU zbyI_2B56c3Ar&|O3Tuqby6V@j>)LK(+x(lfe>#5p(^&e)cT;q6eAR|qa)F43OTpdq zxIApdykBO^5APTV8Y``VM1i}3V*7L$WtqB}-~rbXuuzcpMuSW7aDMn?E~<8LbUWs6 z=)44$)4-?yrdZ8Nsx{Lm5%rOsu_7jv&EZOwHNQ87=92@v zHJ|WLM1WvwrBo2i(AsEn=GBc~=#JX;tACT^5)j$jE=u^I@2u?(;AU9;MZ-J3uk3a3 zfp~|0tfiVXSQLrMElxtX!Xk5vAu;^gY63#tHNM!@Hc?UqgmRKBG`%DiUZE39vM+rl zIPbIX4_Xu0favt<60iN`ET2!VG4ii0A1Q9~NGnc7og`@#s7b3s=5WYita%(KA#Otg z+EwHG#?)W$l|7V#@4ZUmE^Ky|fxazjZ5y$sj|M#5S>OHoCsvCAASDcEfr5Qz+uVWo z>tPY&_0iQsaqRl?#j=nh@{FkwC)@>W=!)Q<77f1)1^LWej2kMyNV9K)iBg9so25e5 zU7vX}Kfq@w_M2bDiN5QSM!$Qfx{=U2ZtrrYlB-|S;3?5IyAI4jt5REy=C>aHtrPc+ z>n{?#Aa)+zSaV%+%VmP?YUs(f*pvEPZ6>$N0o2uw41Ai{ny=$rguub*4JSzg1oA4zN0XT)dFcZ8a{A zf?uNIDk%22UJQ9|HE5w%N*!A*-JMXBRKb>R zCPIx1T()Iyare6#KvJxPk0Kt)1_aMpy2RT{J zemJvAUo3Q3t*RnSPPjYG#U&Qx33bbod7z_KvD>HE!m|g1IwCU^l$sKLH^NUz{7*>` zCzTGcjYnU?Oppa8$0VhuE!#kOgv!u*X3Rf55*OeUt)xL-wI)lTamSD@kP~3^8|;Wl zZhCxru4qpQ3|XIUDE`((*R4X=;U=|ayJidJ+X1ru126yH;@1x|>i}jCu>}qB^@-$* zQI5mQ$gvgFc=n&#umzXd)^~qEWYIidN?0Oui(T}U$+wJ5q{t`5p`*h&gXwWK5Pd>= zeR^f-#;l($MB2=zavI{Wy}9iC_4b9 z=Sr={lWja?HA=(m^~B_m#eEZX{*1528gHVNXQx65SZQ{WBU{(-JK^|Pezt;z5l?IZ z04m39#^@Y^q_xnE=>xWe^frk7Q$f*jV~rC2cEuFPE2GP-9@=1Q$JdBsmZ*V|Qo$5y;DT9lsD zP-8OKYfEMf2#v-md?+&+E=s}*ZoBt~iU&me!GW~b01kx95yzcXoHy@>IVHd8>Mojj z8Z&vU6Z~>afnM+}0H8P?Z7>66fGfXa2k&ks7?b=I?`Op*t9eL#(j}w|4KmCN@vDPL z6|{oOqojtEtAmW8lo_N~GVVU=ntp6{4zpsa+%%NW(u@MC4*pWc7rG z97B3At=X>Q?7RG!dMHN6U5*++ro5J-hU(V~tHKgbGx>(PuQN#=-{5%^y z;HA0t*sTiDqPSP%whK?5>m~DHR#RG6Kl3Ey&Z3_9f=M%1-2|Y!v~9DUMW$z<@^7VJ ziwdy(=(SFE>wsya?P`m{GhS@r0Q-h%?~x|h?U9E)oCWmcCP?W^?$t6@RkZA(c4OS2f&dqc;DZz5`)z`?rJ^gC(z`~4oYPOH(w z^pxtDf`;?rZEBT^%a_YNq41EdzK20R^kr za+8PQP|~Y<%4lxr>~x7c z_ps89l&V!Zj*qpbUvN8T$qBsg>>TjhmB!%iV?D z%A%Ab)zKPs(L@XhpanojtSosC3Ae7>3VOGt zJ}RcTwr%RS-u+!x4KTku%3u|@`(2}`&>q_DoUvkcf-0w3Xt5-eScMk+`Yd@mMJpAd zyM~dsa34k5nHEidkJHyH#E{{o#*+ zDDx@_+I1st8l9<1`Y5KKbiZ$WJtC=koO^WRFX5o@0)#`$HE4S9aS10KWjUU&9f^SU zmrHvW2tR3X!rJLhucnB2Mc()4+_dcsS}@h@5r9^5qBTZTrsc)%V6J&<;DM%qA>LGa zoEnF(L?W*i+F+ACUr%1sjXqhtddbtj6y@e*qE>R%5{0*lU-FD2jpCJ7rT)O0i#Gsk z%K=+a%O%9eJaH~*E9Nl6WTdo*CqdWKH7cpYG_lG+ITBId{n&p%b}LA}A*efNY^ZyW z^y(KjBgsg=LcQF>-GV08;sq2Fw$X%(ZY9Wdg*Vyt7qh(HAzcSw4Tj}wU?N5)a(lA_ zvVp=7DqbZI`pbvF03YIZ7@T4gmq%y&mzw%Rkr*LxH8oBsJa9;g@TyY~TDcY~s1FI7 z6dDvPOc;(cK1AEB)EHMQ<9%mmZu9ciNIJ@l0KN|QaJEY>qfPe}qYI$|m?Qvqx%DAx z9!}u)pl)|3o;b1!XO~ZBee8yjG0|ON1lgq2T)X{bOk{>I_KBEnC zb>mL9afK3Q#~+zxMdpx)81ITGn1 zdH-m*F}x8HhfVwAlf0)hMA zU#d4?coToxx+DRWY87cYLpndw3`hjhW>|dopyhaMJ0>mL1Youv^J^x^Hx0SwRT&7>h<}>RWVW*_rdhiP9+I8Z+G59NG&qgiLA;uf* zD4DT>=-qzg->zuW_y>3H6<_fEoaV2nTdNU#+oHXxz*EI0uSOa$b5tUJF^&C~R@DZUpJq)-{TJ zJYR`Bx{Wz-og}>*@G-Nh%5`jYk+aRwC1?w?Y*+H+51~K-go1m_&NUshcs$JVslqBf zbg@#*Q>kH?qlg!2=G!mj#k_4v%_K*o?Hl46#58dZl$fkvvF(TFS?PYc#q|pGRKLQc zKo=9+v184G7K7Z^2jLnsPtdL1m66_rVk@T8(k zZZ+{5c~JcyvaSd`OWNbXDK2X_u_i;4W~J?Um+Zl%XOhI0I9rn}d>Ny`Sff?qOEJ^C zWYyUlTJ)IN+{2H)HcXTTbfQKz0mR^1N`-p!hbqccs5tMH0&Z3^dmGvW1tEVy*ls?!CYtsmQ5pg}GI{CJg0#3P=zdYjYA>#KqD%Hsjk%#Icxk|WNa{u@&VJa-9;)@qskEV(QxpO26rQ$y zsxdy|($zcWr1uIl11U`1NQamqV2FoB^~J5*ogUQTXwPM?HlXz|xSY8mO{>d;3zIVF z*8fcItQKo7X^(m(nJ$bZSfh;yu*XoD z+6+J(FqS8HIL(>rz7jCSUFO!M5~alv=#qkekQW`q-Q6RL-aK6EyE|qa5RCrkUblvO z(Sv;j}!wN`5Lj+goJD{LO$kd2^eb60^&k$ljISJ}q~!-@g= zh3X~N(*R*J(F~q%h&07Yfp=R!Sab{XT4HhV*RO8$^%`x@a{MX*ui?E zVzRXe>0)r43n9e3O*H{eo;qDJkZt(gY{nOe~ zfK3?}c#DdwPuF10pka|OTG89Hpns?vALtZ;rODH$O_RL?!3hehvwnTKVkF$qBVmD( z#B2iWQEkx!94xGxvm-|MW(Xld?Xjgx6)9Vp;h8VOIkUcm)6Ywst zeqDgi1Ga+8@ zev3(%+#1-mR$2HuW#jkaPh`^pl>t`*L^k_QzA!W*4>@G>{IgK5zAaD92h0S<)5bCF-XPF~ZTfUvjqT6L_>E zv6e<=8I13^zYzujB5akhF|PztywO+xT{!3=gV;z&Z;27%D3Md7*!%)iR{ej#P=ibI zyytW|iooI60mo2LPp}RSKZ1csIvg)2U|m(DJM^&!O-M@@v_-=MfbzJ3m2N{suE&@y z47khhTL0LAVOEEwJ*UtAG7D`hec!;Sxx0;%C73D%JEdnD>~?R3XZ!_i@Rg?|#7wLW zGMMrFNqWVJtnz z(k4UGA z#&|(917=ZhF$w#s56i%q@r+=uaU<=8kd!{Da?40aRY0W$19Nt=MkX3x$%U~^y%rTn zGk4XFOd2chRde_3l`areE2CK;@x-Ad*fb3$-dF!fbA)o891|#$2VZSNdk&S0+9bYm zdR=6^-1^poFu6txkMvxA_7~I-U2kppS-G5KW?enaYh$bx*zI1mR595cmM?UlF2i`M z&J#CeYbgh7S0>%;4TXbXnCo;?0p6S6N%?~M3Io@bxk3&6EIpi5rc*Jw;FuD zcG0+}#kK<@mQw|tsj3cAOkb^$iE9r-zVAo@HoLOx6{ca@IPNyg{xuImWwnzTpc0(%gf7=k&(bx;CNzjA2>1`&aWpcv9NgWX^CDg zO4Q)*g9hzfl-a7nrJO3kI4_98z5Ns&Q)J<(uRY#e z#){~G%oaF8iyawb5;K~2`P$kTnPIt*QP^;pU1EUD*Irf(px%7!%j}a8XSXr4#+Vy* z*cxbij%XFSy9CaGcY>T`R>HnJibio>FIG)Sx&XtCfjUl?*8K4o+;UxX}M&xEMw!oyS)}nHVY)1 zO}Yd9No_E|i|Jb#!ON4ZL64!`DaN49ZfVMO<&nZdkAiD`f(YJloM)EIcsjwEMGm1Ae`K z@%rA5|L{$}`55KZfz9+uxu7w*9aWpI)&3xQzY5Kw!>_MAosqY@k`V-)cmj4A^sKOM zWU{b)UwZ?jLvqaa($d)OSevB;-VX&UxrO(Ny5D810Z1n*sV*_fv{DLWh;M!dA`ijo ztQ@NeD>fH}?Nt@osczjYOcULoEdLD z_TyRQX;1BTSxIs2zJSaACHs77eU~>LTAAEx8V*JBeoSd+eXJySo5t(&{kdE%v(08_DY<0xb}bQ#tXaHNyI9o`IOm?RIb6HWwaXVj z4-5+JZT;N~VzREeuJ0VzH8L=%NzkF7Wr+&lLfB-d0Q60RGe(lJcvYU)ihm(76lXtE z<{>fA1)Z1CwKn776GC4``_t@eol~A=Vq~a ztK6Hq;C6GcWbI6DF`42D=o_M+I~IS6f)i@dM%;V zN~k5l@Md&|p`a94ce8k^Qv@103x7q-1MB0Rs0?!??OugtoNW}u$j!+Gypul26F+hL z&ZwtIW)o&^om@B;1sN%nT&qm1Rg6n?F}q>&M8?D_3*n?pu!HD%(2#`mMn=t-o?3ad zb*_T@WS;&fl7dBfC1(E)e1|e!yK4c!wavrep9WjuBp&}+ya6z=0=Hg9)^6i=SN}DZ zfSO`@miUjvY!Ac`f3Ug!BHFAy3$od1hn1b14UX4d%5AS+{BC!{>*dx7DELMkBQgtE7B*qez2;d9}~ z=fJ%aIYM!j(x9-(Pu=dKt1xeZ#t6lU={K8SpeCkoQf>Wm2@*XMo9^eOOoFYqR1mG( zu&NA0gdT(*`Qh*ku49NaP832DhsaZ6Q0T?@$j@rojoo9lw|5B{id)Zjp?kuNccdnd z?>MD)o3cB=yJ@#)gw5_o|L8Q7ki8eByGu4ZEmKNU@-~}To6V)<+O0^Nt)HG5M_5Aq zj{qd|cue&ZW@l}>>q!LEau!l%3G85+p(&9N#ssjP6K3Rc7RIVABVLux~{W-AnU~*Po(1~n{UH=4#c=KDWYg+=wjtDMKYiU_E zK2m0J9UsH|@LQkhvYt9?xob6vMS_qaNy7c2A6<_AyL`8dlL(L0H!5mY6m6 z>a8vIoenm@s!v9NKhI{YgM(?V+f5+m_24DoRXlH@tf=VEK-+BR?eu1Bv;;H7K?`*U zytk*0v(zzw7MHOpS3=$0up?vh@{QQxaYz_MZ3@nkeL&ct+E7M!ZbR=K87 zSwTxhwX>Re)cAncgrQjY!J6D@@xxQMiPjTR9JCJou*#S7v3ztCKf4a`r?aag!PBAt zBw1pkll@)b^cc--iT(7Rb^HMvJsCTM;I(;b@a{HfXAD$Ryw+EnI=bEQu zddvYO?Ml)M0Qo?X2wZdz;iCag3KbZm96yR3?BLbpQ4+#wj=#1TAOHQ3!N!}tb{3mOy=7h3v>c@U&Dmx5W^P%FwUFgm>#Z>+WpEcKPV`$Y|j0g`SLBB1+D6XS;THEdwapN=uFW z{ehgoM-KxGS=QCRZAX`PUIwp1G0Epc=!+PY4UnTH9WJrNp!Ke)C5+j7(=C8DncI?F z@8g2Zlo(|6&ib~Mn-N-uhYcTZR2F!WIlqA|XLah(YPs;pYW7u2lrd#O)>vD{zeYK* zUkV&HnTx!)mZGO@)X{wz4&{ljZ2Rcw65We?=-r`z9S-BBO>`2Y)#f%QFS@yQCtQw( z+p#{;D@5EQ@uf*9NC$sUbhPnXp$;9~n@>&1V5Vj;-Gk>k{^kCjyyGVqDuE=U)$Y)2 z79-4t;gRd}E~i-ZatQ!!4^w}17NVLQKhasR=Voei5^nxms*e_)bgLw$WcE|7v# z-W=?3NChU3YI*mJD)Aqzuh$TX(vC0G8Zp$(wQn@74sx=l-x-wit`dqRIcYW6SKhpt zfif`FFZkvQzU(JkQIOYcjmHkD@jd7u)h8?8!lnmm~iiu9V-7%25VS|0Xb^v@fwo>x4HWx-^kS>H( zVARN<;pahU=O?A$vSy&enj;zbzG)aAB|h8f?O0w0keua{nG$n6{$D~hnBhdY@-Wo0Gz-}Hm?9Z(cYFfTM!-5!fGQI6G$^G0ft%5JVfkbE1cVe<2<^15<+p$ z7|qRj*~0DoCR>4J)I!DG!W{9{V#k?5#>&{K4a>G$U8Y|%G0OM4iyaejox`TR+41QL zj*()Pm-w%jL&jDCHq%gCpT1#wL`sluE@4Bl5~ZWy8Zg0GQ436SXW+Z${%6au3-R?4 zPY@Z&#-a){hB#E&kZ1v`rr$={Abv8Tnnw8-9Yg%T*a0ov)b3Ws?qJ3?0E3O(vjutS ze$?gkHOMFf;%s;bXxV^Yo3Me>ih>#3TvMTFi=5Gm2S$;@VNRu-t~vDUz+em4W`$#G zpP9;KR43f08tlIO0YTBkAO^O8(L+s>2SzXFp;d_=&A7InIarN=zsx!5oTH<{8k=Ft zc63ro&0(N;G0DK7PiKG=4116aepBPha0m&s8Wk=ut-lYJ3lz}+i`kIoNE~H>y1QtU zb(v>{v7Vp zRZd-3j%BcgRxbRb>Ww9j4Bbt{mElFUn)l=L9}f!3Jyd6Yx_v`q?jOrz7gZBY7m(^Dqj}!?N(j& zR8q@92JMPwWqS{`KvXm1_vx)`-F^_u%1n^|nK%U-S%_Mh*`ZtFAP!ia2aX zTlhIo7d2lUs-qdC1`g-tDMXLm240uMy@#KXE>Ra=vGN8y9lA8=^J%49*LyT@jdypQ z)I)u}_bF#BpYL;e35o2vExT(Uxt_SIW86+YI^QX9=!tmqtt)5fC6=ZlJF?4fOxjV| z_sUB1MWLC?EUhMbUV--fQK=?;gNOTa&hxy`N=nOTd-F}tFy0=HeclN1AG~GqTuNIQ zg_AlEf_<`mFyzjAnO~xPyocuC!hME(GcO)3`F(yP7i*#C`Y>q!KJygnp~#_SZd&7G zUkz@FBNZP?j|gNdl2;6F>~}Q8@PtS{>~d*U+MiKm8n|$b=3K#?}`e(Pi846gg_() zQeNJ(-+%XLv%bQp!Nr5UWe?ub=EIicXiQ`xExd#Ov=6?IYays_cem|iY2gCu) z8yj8y=D+~|vvp3wMZjKK2e(kCCG)OItGQSGLXB>qU*W&riY_lL^_cFKtNy{puDsG& zAy@XS%x$7MaBXDm)g_md)q8uUJAMV&xTD+fV%nUh4ctOt(*1csHr;fz^2A8l&cC-p#Kbif!Ext zw(MKrCwXj#PVf7b;wh(2t==9kl6uXdiW%N^je|w5hwH5GJVTEa;fA^Y_1C+oFv1)j zK2KcRVRi(o(4(ANi>#{LYPVOx)jo?AazFnKR~DX6if8#MKmGdZ9{XnB(T|+IArY+i z5Z~Y1>JGhrm?HGj8OoFid;Z~w{h5@a4gGtPs)@YfATDgWiC4wxO zg5O`iU^9x!ws3OxfQcTpGLqQO;igCxkTUf&>&iXwE2ZOrpP~2%!NVM{odRI@kW<)8v~UOBuOWR9~x$ zPui}(w-pqEcbaI6VCcq^(ffa0PtDGWW8+G!JEo&9-gMXfk}6C{>UomW0q|W7+?nvy z8^=8F3Yte&1CNRYHdX@mU3o7Ef3m16Y8*1bkZmP@`z30@!5@{_SwHM+pvoc~xs(&D zQ^Php^(bv${vq^0f6g0M8D@|nsA*1HMc|R?*Q}I5{Zs6!R}zCO3FnpyLIJo5w|dU{ zv}d%V7*F|YoD!s;J81m}ZZv2Uh{}SGFmmDc+UV{Ett8`jR9cTcCrBMNRY@sUfwEY} zUXHplx#X30#r~3>fM|B*yu2hcv za%=oLIKkEJd_qBC<4nrsvg1w%^iKAimfh*Cl#Z8WE1H=||Q`=hT?i@Bncr9WH(trRB9RsSlM;db4mX8k&G*+{vd$ z9dO43YLDGki`RcR@-F--fRK=9^&CCa`rP`l7*No{XMoi@f>6IL+xfX?Sc0F$0(9QiXdLKs{U{Wwtel)2J!&u2+Lh`77@6G~ zR~%ul?Xye-*I708C2N@;y~|l8tsT|Nd8g{osD9kbc5H8Kl9guJ8RVIlYlfVk5BQ#d z3LHh}OsP|Jetrn(%-lL?I{Ez0$*h}CE^Rt-(6Ui_xyf%;BPS6@Sw4&pL0q!R+i5xz zNaZKn_(6!e$m`}Fn_Zv!zSp9}7RH!~i2wO1sJt z>_>cM`9Tl$#J4P`BSF79L4EWtzX_eO5l2BECkLRoK@|uHp-bWPH7YR8C$g#ItX&i6!&mk!v(NlfvXL#wn z_FYKb6&v|r8i~&kS5$jbB`Nxf{Ss$9MowE)^gu^?l1^E%G7B8bzMm4(C6}0#hf^0N z*B4vs<|Y@sP>)Wy?Rht?b)ZD$oZ!>RWg4%Z<|4#zsB@^$x1PwPZwC5&*(Hc6i)*%QXMiLmWRODV3eSyhIUUZH{8E@a_9rMtp%yy2KJLuR1Rn{_8GP zTV(!(md3Qpq5{kQqfTdrLS#D~(3Y=91?n@?rUfre9%DHzGIik-J$sNezxc<3^Ma=gP8 z@{I-iTQ~TGEV=~UNB13i8nxrMe%?FzHujy39v7=PMbJb~b zuk*86D(pjsK5+8l{6>#wD5n}6{Xgg24{$U!ZVAu6#9eiq zz;@&b8WKWWh|W*&PH*0KFK0Lbr+BvMeAyXNv{?3VaK`Z;{-hGB!+fsg z1N-Iwa3EUBhUsfEm;1k2fN$4To=v5B1No8)M8eX?uP6OSXx3{pX0?7KZtsAhqnjlU zO~@^K`$e@|6Pnzf=R(M6vr&&8{iIqO?-5TxKI`af5vIlV7=X4HzOo08T^hapyBY+1 z1|UV`+sUb5`@XVAx=A;o4@%=K?>>UO%Ca<~tkAHXr}^-8)?ywgzQcXrT@DDn7JSUg zajNXby~G>0R2?GNSzd^}ecSYy&%HPOwe?+rM`wIhU$Ajw;$J<--r^bnc(PF`S038~ zUA>Q5%5nRCEtQ-WxRg9}*z$9AMnZ(@h^ecX^16R6mR6p96mpi-X_B?T5FQCF*Gb92Q+Ivk-G)K(?02hDPDf`N6r&Rx+e0*2z zCHx+wtHVlV+}bX)_}vY&(WZ)e%d+YpyfYNR-4(m-*$~$EPwFWBAGJ$umgz36EPZEP zMQ^f-z~pczLUhg_1j;G=@Ox90^QVe(($_A#eKKGPm)zE6MH)6tmK0VWxB~Ah?|HQ? zkg(rh0BLB+Ydou&8s+$4)fGx$4z`K2UwP@gB*7NgSHo)DR3Td=a9Zl2?tSa>ucx;i zi5}a=ZkI_G^DCR%n93mlVFyA|RWI(*ZM_hKfS+gG-QA6b>msdJGQDdzN9KJy{JjPq zhZQ)7jMr?=5$0<)sX)7!u|4b9aeM3yuzSO0G}u(~Y;D9lc-D?r5l~w4{_D9?xgO-; zX}4*Sq@dy$Iu`GL_h|n6tAp`p%yl^ll>Clskw!PrVW z`EA@0{Po`?iN-5)aV8_c-=i25n2=O_c%9``dH%@$Uka(+%AofNZTcPmyr{mp>1b!W zc1>H}OC0Mh6h{Mvk$Pv?1x@|V<2X8i2meTia%Vq2qg$E_wZol{Kq~h#Tz_ytAjj+pZ zjb=4ViHnfYy?~kofwrd&yoaE9Kv6E+*psM@0Cv@>#*U%+8e5=HD8=2a<-JJ)tKe-$ z5B2!nBYO?0HM805zCZt77)b?wi3fdq7Nps}iTeE1^FC#tGpBy_NjTwb%5mo=*;{d< z{Sgmt2-u!F-xU2Oo7tl#)`((#B?>jrwn%JOKZwrMm3sKK?h3it*L%Oi0osfA?`#kF zis~-!JE*0uTU=azRQZPD#LWW3^zRp&k3L5r%_*b2hmkLoIhR|l9%%}^KmIX3Bq3w} z=~(BuHkr0~J32PSF0a(g(sBkOw289JGlyT9tWZ8e6xh!8gLV=YSYdx#<)Voj0+nURDeX8%`uTwWp=sgg7T@?$_#Y$&K zoj>$;D!KA`^Ot89s^V|&YFbj+Qf_Nt$YkA~cmF(D377u}jM1y=e#yn`-I8LtQ`}D3W~K`#e)m!M%&L&p6#2(mtRg zo_<%<k=MSD_43me zQCu~%%{6^aR;*_IC$kgly;t`NfS##bC7iovy;L3*XnCAZEh+z&*3n;$j~{7PK0lr% z63okiJG7EnM6uRZ=PA-@y!h*Dh{A`AbC0O!Q=%KbO=LCYn3ISu&@!Q+FpZOT1DR4? zJTY1kOxV{t^;QAw^A||TpX7+~_Y>0>p~IU;?=TL7Weq2Nve!?e8H+OEy=0J|DM! z+9a6#&aGL9Xzdz7S%@R-{lK1>vAxt*{)&Ax_1kd$;Zx78nRB1`LyZMxy7i15i7uJ^ zk7KUmC3mIbj#lIkS|F#PEhB@yMSB$X=G0^q0t9WJI@lYij^%ymgLwE}4 zcU>8KSHFKC-#->z7}ZBM4hacTQ)%tf4}K$#^?Er(-Glu5Cc~VZBKs!xr-7mbR!6=NT{_x+P*r}h4{OjG?3FAWH$aN{K% zFfb_<pQTI zc;=InM?61mKHpz18uwmI3MkvZ)HZM(Y*{oCsQm#&IM#VT!CSGRbL$>>xnn9`>AcTg zl7q2lJmTw0!Muams5>}&LQ^QKTTP)ush<{toFNbi+xU?SwZ#I_E89LRR=QNSQKvEHelk z9MuGvQa8i)hsdEU!{jp_w#+LpBeK@Z>WZ0b2KxKKnG-GO(MlAl<_Xz{_6%M-4zq?1 zv-rap4x{=rOBOLQ-=x)CFzGT*7U#}gKL=b=iCF(nh`iZvbN`A+P@~sk2VuVx zIIRp@=3na${M9mXe*d=JPOPJwxB$mbHkAuEHJXR_PPfk8##Acsm2Z5mwS_vy45KvW zO9Mdzua5r`lzV8_Ij%!g=>nJY>YI7+)8b|jJVijvhBAOUB%}#LmsUuc0|J#c&-;K~9wb3HNtiZu}E=Lm)+nq1ESkz>x z6)Ro>C|o1sWQn4=8nmTu&7!(|hLMKnnCOjiKw#ZHXe|d;Z z0w&P7Lw=tCpU-decs?t$u}=wARXzVoS-YPu>+(krfr@dcu>hrYb9}=9s_`T9y4jLO z?(ge}H5|rOht*I+u!i`7IG=Da3l}v{sxBCZ)4cVhGj&eJ8tL%l-z#?bf}=(s1%E)R zno%1zq1ED{k5DLQLseZZ?P6l+qm%s>CJMI20#_Z^W(7ZaSo>SSsM2jbmV;oW?QRoC zPdd{;dE>I+V(r-;6KR8#&_S)Si$V};LhUz?+|_-PQ4`U5Ykf1b*s1UJ%v-1%7a7s zrl3Koo*g18&jab0F?an)O94lTD_^S`C_rqeu*-q-B_nHX>ryPQFzfy|s)8ixCW=sH zzDD_sxNe-&MuzGZYdtkR)*-cL$&V}M#nzNHhCg_0RJH1x@~;unIC@|trr$0g>B)Da z*{I>y>9=$-E6djNRiLZn5y`{Fj=z3`Cz%i;7Lsc;V3yZ_8?9#-E<`q^Qd{x@hmMVG zDg%+NLI>em_Z=sCvz1V2wo+E$mT-RF;s4YHg-ph}E;kOe6QFrRWn*1R%o{F!;wp< z{4^MplM|&{2^lT&3KK70V?U$LbP&QxG9a{sc%x<6#uFrpGc(8W2_UJYa`Ck-hH~Rg zkaJeJwF=`};^3hjNKf3!*_GfdQ?e8Ps)cM)c~V6hjV?A2&=t^=I=~Ce8Y!_BrdtsF zmZq|DkN>@bs3Fd5TT4i5%!bd{{pj!_w^3TJsmHwM15JJ=8ds)2%kXL;93h!Fvo8I! zt>M6_=IAQfJbONtjnbyT#(#O#Ig7zqJl+kTZ3O%*@Ct}L??2c7i{PONI=c=!i)H)_ zwJUP|@&xeAqPr*$QFi=f1?7-qIQBkqs80rwa=znq4!R?|Hm>uBYRAuVd+pp@Vj`NYg2`_dRZs8DV_jVZy$5XOG6^<>0Clyt!keeF#6tEA0gOKpa@BjsVJ#vi8uB zG?Z_RbuZ6)Xa9Q+>f2fNpJnNVZnyK;NgofSy#eAtW#Yo~0_`;#OS{Rpj~n3KNakbu z4?W-;4YC5~*5u&dp^qyPS(z4MDV5{a)gc_XcoNi?fTEDAf-qE~9Z+kI6nW`YIoYMK z+?&FXLHhd$vB>61U~J@O^dtIMEV>osrL060sDCifc$165ge}`5q=}VXt;Rc~G~Gyy z4+z5I4L5o&4J`IWZ0Rd=Ts|0(6_O#O;v()XmoHGi6h(MX@6&u60plexW7&juC%aGp zfY|w?#!af00L5|=%y?>kw5e$FIn@sxC4rh&=Y1@zSZ68$ACz4gN(jC22d^U(u4Utw zoEHYqp+EjFLE>v0dj3GrTK3(~O#n0)I0wnA4gWJ>;t|3%`uA^6IsZ@WfAE7c5Vd^o z1~8594ss@5Im+5cOOw4KM^{9ICw8&xwM1+Vt-r14V{@U=OCauN(4I8aAK0QuPqM+?v`W}5=EYNFzbrBmxp={Hi= zVb$i(T8MT4cPA^BmP%=%9M5O1LfcZpXMy8R-vfbDk>zApPHCCncxyhJi+4S+s`P)9 zpa-yK^{|I(DhXZA8`bfKMwX4m(B|EMgK&m08o7K$G+b14lZ0|cnX~|t3kH6^{pNCe zQfa=>tJA8qV_URrO~K_GVf*A@Kf-Un#!f(3U*S#d93YJ#) z>dYn|J&Au1@tDCA<%tI;vrILUsSE9Ji?j=V-4_XNUMipixC~MaygkzpMl^Jt_0B-0qclO=7&k>=a)o3Bv&7jCT5pv+4vF$FwZhC{uaW zs|({5^4Q%`#3&VKpCj$(|2u=7+g;Y+Ti{&t zSgSq;T_NBoUSBg@gx0og+>t*0BBklr8ck&+U^NmP!TWE!c){g+Y-;G?#<-W}E$tOL zqHsWyJTmCmj1XZGbv@g4N*z;EP~aebRw|g+jH9Miyu-o+8e?WE9e5JY*{});^wD>7 z2pQ%=I22hAYik(FqVjqgn^T6)Rmam;4zkUc6VlXyFpefv()~(F=Jq(g`7kE%N-+$} z$d+!mFd8b%xO*}s-8uE~)g+bKGJd0H0 zs{WD~qQ|54iex!KP7-kr0+`E*1vN|Q7xp7Ke@qMTHuf2K2CvNyuf$9!nC~%F*m?z* zunn;X^p_ktuH`ah8$*OS#wP45F&rRLavtj6C5mJlCxfV|biNB_PovJG0 zLZpCbUJdUF7ZNloK#CC|CrZgJ8&i|K$FNebl|7v0R!U-M0<+R*8WK1VRBzCW;Q$}* zCMFDNF}a>D5vm;bR@~KP#x9Z27$$k}?-368$?$*WGiBAeH*ifp0t=IGC(*TzBbe+~ z`T3tRV6!roV!;`J1d&YxJ&O+l1mDk$<`Hc_Q-p|FV*Fimk;X1bndC;4GGoCSO>&ji zf^@9wix)%#3AbZz9k09taU#5Lm`M{Ei%fpC_S;5+o$c#uhfrrV{CbJ$y~s&T2Z$8} zM_SXf;0=0nsImt6r_cEUXME-H0}A89M4e9+??h10husz7&&QXzx#^jXEj}Pv1(Khe z_Dw6nMX*?0bQ(@r4YhtP;T>1kgrCSMZn5-hffZxBemn>S(IDn}P*?qt9a#wr2dgBp zys9zZqV<{#{r!`EcC9!Cg-O`G=}!z&9}3KX{}stO`Dn1(dx3u%3Mtu6HTUpX1Aogu z17o?L*%&A$B6omK=V{o5VvqlTsSAN*{+!2jcw!>Eykr_nYrkYR0-bc!(o~}U$oPyH zIGAq+jNK)mVH^viG}ZMIZEf*@{ltYHO%>hKF~6uas49!v%+C`dg(6CcJK2Y0SM9IP zSKE5rlUAejHW85thG8V&h~f2JL5(jvyFBr`^WMcuI!n+VsbL4m zN>E;wR0c>=hU{JZYIgv%Kb2WEMeFb zgsE_!F=Cd-f4QWOAc24?E;6#WHc3_cV0->wA%!Y4L~RdhsegA$y++M{E}lzrzW%uY?yp&DO>WE&TMz)au%liw@81 zen#yX+TVvVE`hBxZQJ@HbzxE%j~!RD++aFN@eOmKyEvdZIkho3r>MeIu=Hl-j$#gE z8J=PMP!Y1+beqOshEE6&It+F&C@XMV3MM7I826dm4Om-y_XbI&q9!llSW5bL#&=Jv zoCR@$X(S!oK$_9{!@Yg>@(CF-^B9p3xkI=p@@iYVLI_h5!8y0|H*bNygY(bs4S^o3 z%yw=1i#Ub_hGGK_gD3-uyEnY~?>hZ5|BJY22HJ^FsWz`#+dg^5+{*TDKF^6f&c!hA zYY{BOnE2JEZxbJUgw4bioU^KyxK(41NPUumhRaTv9z#g=-7>Y1l_#g6K6}q=ee&9$-Fu!b$NLi5hRZXO+X1(r+4j8v-*z6w{8ac-w*C(I}4wrZ@rrY>o(4J&AXp? zRvj(?p%q*sKdv7SoDH~2?@Zt23>1_(2OjA|WQ1?ulYGBbtkG#O8v%q*8dJyP)hd)k zH@^2e0`=P_Yj3e}gpYbJQUcg`U(!_Jdkpm=B@0^u=+gTLi$=h*20GPirei?&=Jh)3tO0dp z^KPNdsbd!(Z5ikVr{z92Uw}b`HgJ3a{Je8Y0^NJub<4oTWPFje*mZ2ldZCFywa&!O_>{qlC8^R7NP=Z`F3Y(OAd2SE+~ z;KsAY^$3i7egS_6e`d=YYxvTmFMxRUPdD^hE=@P`yO`ij@b7?*;P@Xmd^hqx@f;@q z0R5j4U%O4tZG+po-vdKtwa`!oPY0L8+u+#-aspr{en7t^d-GvW=z6WGsw#%LoBda4 z=Y>WLiLl?#EdR6VunHbB6w2BcAv`M7@7n@+=tjUYsI*Oo*wkf@OD@R8< z5(J^1(PS^=mEBrd>%gc-X}Ha1E2A!TieTt`@*zOp;=hix(J54 zv2lX&r6TuVH1g{G1SLe!aks1o2yoVievV*(?QMo>mrnyiQschu%f9zx6acYnl=UKAMBC z$fR8(cBF5tlPy7pTy76uellv=C*-1**(R<)h`XivKhP* z`)Q@>9=f3Oau9x!Lh1Le7mr*D)0nSxRi}8Rq%!J!2u$gsU6Ij5+HDFg zLpVyZ8JQ?zT9AN2r-829G1 z_-n1uh|?vT&biZ>yb0oRN7#C3e4N!1vcx=yHuJh*^5=X~rRw|RN4*Xtu3+8mc}&_R?2 z7WS!*gQAbnejAmk`T6PI7Ze8bjYFVQlB=t$*`(tSPsw@eR ztCf}26)2A0UE3tkc=Q+2#t`9yHuW*zg9@+Dym}2T{?`j2)M?d{MRla8@4c$#cK`EB z2T$W>j#xzrOFblvt+5B8FrBIq!d8`&j;80c4&hXVZR9ITJ6lw1w8*Z%&36ywsh!t5 ziNL8T%IoGWmgr=5S5#%V82@qq;DdI`Jjd&w_8MsgWnoy5fhUEjlSN%>G4Mr% z)N2GS@nR0gAC31ljU&F^%$W)_mWqN*Ty4bqsNtfWC&ke{l=reUNyyXkzQhc2cMi@| zdKm#Fs+U1NGw>E% zLH!uKac6f>s{!|-0cY9AO)zz~>e#lP!SeJW_~rvt49>fnGmq0Y^4$fgLd4K*gqpte zvc2JQFbokb9?Z%-{{>xqyRs0;HZ+@GuetaBiDXp}rEUiK9nIM1-;6Y=`#3w)3|8Kq z?)zy`Be#6OH~$TKo(zriZ#-;Y%CTirb=f1eB>eXH8OfxYWIuZAubb?POubpY;+d=8Q4i* ztM7MZpYY?VR0f!zeC3=$5boITVXMN>5EdWC$ygqZM}VoxRj^kgPV1lgUaIc{F_y@F1@q^Uc>>ANB`^2Tx;+vb zCnqO>N_?7{zz^b_-6swRde(Gi{VT3KpKG23spKJHtuV48S&UCpa2uY<G$+7l3O-b5|7KXXH0{2T$NxXms)B;88E>qgXZ zM5)i*O|)UtY;2-wf6`?08nMeh!4$OU=7t*nB%7Y!f%%e1>s7R*t)jsRERBH^1 z5c|0TWb#m}s>+tuQl|u7R0WZd&$2QLupb!car#Bw>pjT5zet->Z$-FB^HG0qx0p$m-oHT_s|jAJkZVBI`7jr_+1`CtEj+P*9CN(_O^Gw zIG*2bExBwG*iS(3y8UyUbL!2}rSapT_VX{mi0Py+&4Z6S*#?D?@EYeLA0G3a$(p?2 z^X(LLGXQe<*Eye4sJ#$eTg^3d?HI6{fotMjpyrX71X3J$Bq$4cbkruuRTg=>K2cCcV7&@*HFRtU8#dNSMt|miKz*3#&DG&9S3i*B)a(I zbgh>mt!|aPi3&T4*x?`(Kd)zuTs)~;=W9+`3Czvvt!C_|TZstSkq@Djf-`2Wp%PA` z(iEX^>ZkMjADc=JHJ%)Eu`<=qq#7RyRu!Dm;iH>j%h?tKI{21vH*k{TN&{c&{LSZy zd$nMJEFn>pKQC_=A*1Cbku*;=D0qj*$xixGBh1%xd@4Bu@!wSvjqXqn0sX^~?>w z9i1HIP5{KYCLgDH-CS62GgEXKRGnQ0#ShO=JK%nv|0!rlFM#vr@j~SJ0{ZlSpRe+t zFM^GFSMPgo!DKe?DK&6uwmxnV^uAl5hUQkqeP$Y{)=I#v_b;ujYZsu&>?@-@Oz60} z_p)XBcD%skCR(GBPNT&LU>bYISUPk3PdkXEc^`&|o!6ifGa%h$JAJWT@y|4dlFz8x z!3~cixg7BRi8!V_c(}b#nZ>?PNmp_3xCKR`v?~Z}$V?7Z5QrKrFNxJ6>jOfzv z{BY$ArCXRQ+MEQzBDA2MX)Sc53mtd8`P^%}6?$)RaDDF_uuYtQ>)8rOfVSSp6WaWM zbI(P?Hh>fdKN39mi#+s04<2v_A{d_cU)}`#`3g3)pyl6U2BUohd^fll5bE{qI}my3 zG=2k1L(GlEDd>#BZ88Iv{L9sfJ@hA&SZ$@v^_T^(g%7Cbj&F$mYP17X3XEO#A~)e8 z??7VV=~?ypp{Wg}6u{5e-b-o*b<;X;Hy9r<(!L}fabS)azaxO#Z7M&Q7u#v55Y21O z{E#bdHraz5O5zTdUZ2EQL=N?AWT2DOl+ujwZ)+(1U~Z{{fdj&^OobAk0`LC25SDsw z0luU@IYNm0*PU}Llio>s5uymG1DUxx{Q+b7LOLx!S;vA2))SO8_;4~T;4cs90FpO5 zDJ~gYcwdM^i0SV*X*01`3#ct8XpYPXri7vg``hl)Qz$i$gCIk z&`l%IJB30FkZ|2s{B@m~jJkY4ITZv}083p_uoZA@l+XgR2 z5Wqg}2Zdn4OoQ2q|8ie6dmeBSb%OkSyPx0tSMub@ZNqo}1R(0*3*KPPP%)+pQUK*P zhxqbe3qK(s=y7+ZGpT9AP|RdK8XU+F$1@a7;uCmSP4y+VlO#Z~!bclg#vG>sB1jXMFU=qh=&w^2*e{yy>iEXjK9h}pK{@ z5s1mZq6;3&z+(HBFoYUGq8VUsC+%ra`vM6tg1kNj69EswvdPU=TW>cw!91X-&TS0e zl^=Zp8SYf%;lnfA>DLV9@T#gI!(D#>Bw4``f>`=>zJ3WRy$8Eb*oE}sC2r- z!QtgBTYXy1k`_U!0@Z}P5pYW_2|*m`I|!Nt87rL|+%h|WM;UoDY9Nc2RutA(%|5x& zV`DEmi{S&qg!d9TEbKUH->cr~I#E^-rIHHGg>QA+B9G=2&Q7MzBdSLYra z7%%NQg;&1$rvYm0?G)%+php7|-aSxw|1(qh z{CfLs`WFz`U0Zl{ghx2pG@6=1z}O37>!rv;Jy@e-bPh>B?z))l{hPqE8E^rm8c3i1 zeCP$q{1Iwh1aHnHz*^V9!&et{394`A4(4~EwaX;ww?y8fU4?9?*zx)f4TDgMI#~HHWR!m)~We5S&Ed zDlMf6p=Vq?jEg zMDhwUvXE^NE}LoM=c@as)>DI)<_&>~{W9AWOmiqtdkY#D;-}rc(GgGl;iXsVse3+D zCz9O0D^=aI0myVYM;aXgH29v7spXfiwo3zbbwKFDkR`H;=TG&7I#o@?Kbt zv+Fgik93`$hIH<>p$Jvz;fhSfmdSP_Ps2uGiVBv(Cd0H8STK5$|g zwHY5;Xe5$5;NQ=hT}w<#(C?pd{pie%hmje`66h?=&m)=IF96xMDG0E9$WX2p*oZB+ zgK(?=f{x|{&^plS)y#X&*mWSu>Nlpp0Ro7nV+Vq4EaBz`rdF>}JkAw|k%mGYY)?0i`p0WIrW}}`Bhd)r zJ!5QVJlDabiT?n$w8M*`RKjg&!wouJ8(dpQ5e#U69|KB0_`WT;bL6djv*Z0tLXZcj z4P79Wly#^7hB8mt9p~~Vjin<4yAi;Lf#W8=KKAP!4%r?Vp(vGk5+wUZfF1d(W=CT* z3W9&43B_v|*o>wx{3`OV@FiNl+AVfmIem3y|Axy3E1##RCyQ1jwH(Nbx9pc0WjAq` z_o~t3EhqcpIPP+SuE$&w1sof$ySi{KCu0j_oX5OL>O_VNM^R0aCVpj28>O<#;$D*C zP8BsnHr7Bu-iuI$79EZry(%Dzy&@xoe?$%}kcG$6Nk8{beigyME57&4t{p`EW7O#mMhpc~dcrJQ$b9}Nv*5)Amoe9iV^@e1bko*UO`4G~X#kWJ z^$sJt61K2e80~*r@#R*{ARP5BLAqaH|X~)=$_5YFGrw79ht;q`geIgn6gz!0iCP^ z=w3l`mM-s3x{WM>zHfk~=mC#~-lF@QBJT-!4YJE_r-4q$TYs3&|Ga}QiW

YiW5% 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 D&Ajh2 diff --git a/resources/img/pruning-screenshot.png b/resources/img/pruning-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a65f429286080350b5878176242692a63f2a5bd0 GIT binary patch literal 48282 zcmeFZXIPU<*EUSADySd=B2hLEVxdTHQbXvyBqCA- zDM|?tAoSil2_fHw`@Wy8?DzZg9`DbG~4e;jt&Ccg!WaRg(m6V|Om6SkGCkG2_TXQlpzISG(rf2S7<7<8V z*wnPOLy(`r$z9{+%hwvF{$D^$=rrPdd+j7JTX@Dr~=_!8mP zYs=-9I!Us7lMZzLgYpT}oSxVFGRO*|dMBQOh_o+z-ZO@&oIihFGr)Fw<2?m)EoJLD zehL|e)?~^j*-8VPkfp!q2z0t?_uh)X^##iAb>5?jZ`h+~?Z1EPjQZUtO3T#b7ujIk z+%KR!no62X6rH?WQJ-|80<2~ag4)u*Z@oT4ebdx)CcXs_O%cG5IC4YW$baMfDMZiWBE*;t`O{Yv?jBdw^P z8UI6Z$)F<7CHC{WtA`|#UT|Qb?`6tH+$$1^WPCs(;hG?u4&tI0a;V5ES|2yk>v1yz ztkp5sy>FqWMkW9}(~*&fT9Z)$PvpQa2k=WqM)^L3j28Gj1N`1jrTA|t6-6rLf1iPQ z0)7-VmG0jMJ~hpp%+2kctsGp2vqcJlrZCo8x-PnE4`j?7?1Udbb$DVf>|y8ltB#z9 z4De`Y?(!JqVP|XaEaM@6`PVmOfajyvB9}qGzTyIxzpSeU1t~c=nS&&RZwQNCR$u^u zKypq`Eo3xq-}z5<;6M4xRxU1%G9n`G?(V|w;=&G2mLk`srKLqg#YDu!gn(}dIeXf> zJoXT>cjo!Kk^i=H+uYgA$=cDy+QA-l)b8Ua4z4cpmoFa?`k$Y_`)TfB{SPI3=l=`~ z7@){eiO6+fQIY>?8>lLG^i~FH?O|@Kd)wL$U=Kh;;ku}pq};Cx|0?>2)(CI6`@Cvr6O-&pZCpMSjt7_Gn{C-Og& zroiw$w6mRz3_^DQwxX5?`O*ljPjnx#W!>b~fcL8W)8K#rzL!8=h)eRz4F4Jm0T zue`jXuR`Ad={uJuu{Dd-eOvU*9nffRHg!{OkMo0w56fnn6Q><0VuS z9yH7lGIFZl{_rVLP*JpXcg$#0;hcNCgqd!P{n*eUsVC@}>G+hS5>%Cs(FIuEb$sX) z=KsGer)OrVhupanB9EWijCq&*cz4(j*@w_X%rUi{{%sb1(SLavIu{tQxQZ{&%*?cu z)rwfqUVgvXSr*>K6=mmle{a1F%VW1y^{pjQrDLIQDcjx9(nz*K)6y;_Wd-1 zXi@8S^)y|p2xyV#PZqMoL(<$&I!547T6wxZY%qC`pFMk4;f^Es-VE+qYIi^hm7Nu- z<1$Yw!aiO+r-rzYH`=QPF;|DO2YRPF1h>rHNXF$>4Wz{8;=|m z*dKgzAnx*@@vr*wAC0UKM$R7YYBzS4GbwPH@!!=z`XQuziweSeAPS?{$&*#`};5>;;9lJ-7m@Fq@tTS-jzd{&jq>)$hD*Pnl1$)Lt5 zqJIC-vckU6LiT;UjkW-+WU;WSwUc9@%fWfA`!U;1kA{ASp(p(OcMmqgyW|`F9DnFN zV%kUCB|Uy+P+@?K?^}**@i&V+AW9old(|iPuRbNLcfjy=7xx-*cGw*w$*nr^rF=!A z62`AbTglgS`kqa^L=LQFrFvN(j;X1}S#$>R?hM0MJx!<|b4cV^>XWAIxiXSz#g8q# zwirm7CDrYXT(P05$MRtBu2J7Z19pnM2a)XHK3eh{;u1m~>hQxuN?M{9zT1JQIV~dr z*GJ>aUO*2CaPPD9|WLUA=y6r?lax_)nx^wTEUC>4lU+nVLbxzB4q_sNFTW#zM&7Vam!s z;#~`25p7cJ$|*%~ChSK#Y=yIyb-T{X^4<5|C3vI$=z zLL1$vX#=DUE8AXYJx zh3~AriM0-+XW9D&eT+l>?rxg$!bL}1Qe5;vbRxmDiDy)-nNqmhw=&sIJQLcSUV4D3hX@_!oj};)s@wfV zob@Ow50@^1xqQCISKh>sGfIf23Ut^YVQkdp1*CP%?w)hq$_Asad$7sD_ zXf-f6)NV9A^N^XJ)Gj+^ zXE4NrK6sVXTc9o3887js!ZcI_x>y&cG3_i6ZN%*x-4-o|4&MGbB8V58g>9KJSQ(O= zlh2uK+h_;%z1isxnmLPq#v-dzU48ZI%>oEaJQzIzF9rlTGnm3*aKD# zqXzSR`xdA8a?Ml!N^q-Z!;$2d_!1)B0_kS5GcAp4{bp}K(=-l))6H`DnA5GPLHgC# zPrDeps_T}yWb*S|9x4v1XM3tr82ah}JMe3oJlah{f^iUNt=TxVb2w3y6iCoo-LD4#$)Ib3PU z@X0hZJ5{%hYgwLe@n04gxl2hdU*oc7AP^2QJCT#ajTSp|ka7brw zlXo!0fdgr)tX(e0=Dr>!Plf&Hje%&=%BZxsRjSm*oC$@E_GgkyLE=cGgmZ_LG%9t6 z1-R!Frw1iF@o6j6l?Pjwz>ri6{(zr_?otNhqcUspivp=X)9eIyJ-7No>ucP9+A{oU z&_LMP__kgLK%0H6E?bUg*e%2@$~j`xvix=g^0e-{@zSZ6c3JPjPRe%C)S3p|*}=R# z%qxSZfa{4eh)4A{Gl3<(7v&ivI=Rcfz>pe)_9*-rTr6qAndXJDTF#@rz6eNraJn$F zzvr9+ZW}_}3?WHrZJ5rJ} z_U+=x$Ev;?G?0-Y2}YMYLy^tYt+}_7a7lmOJIY+`n>ZJpYZ{rXUG`)s~>ME-q z{i&JR-P)p^vln2J+TyT3Jx-`xDRQPwiJz^(S-#NiyvsU7 zNy{|&HqbXx`t~&}cj+Sqi)+ReLqC)DQ#HM3%@7kNu1yQuF;0K=$)xmF?5StbbwM!I zHp?NGWp7#6lZu0Ev8eW}4r5cxlM9yG2(34+rM8R9vX0#(sm%M0`2J6ih_>x}f&XY$ zh~8Pg_pix_Dcj+l>{hdh&+=RyqxT!X@$Ynen&0X8IEqkye-Re1yR;>Sw-FW|&)ZfI@$y^Ucb%=X=Hxb$yHAcSk`#Qx>UbJeiqj8+lLlw5z zd4maf)$34Qm5CWU$wO>h0qem_@jO#sZ`blsc^QIQY@z;a4`H`9roF1_CPFVG-pGGn zSqJ4aBQ!MEx!Rt;$rxkeJxKkiYjrsiRkkeaj@?&!xGC9VAyg!5UpJhmRWKE~-Guqz z)3lI`Eht}&DJUtt`mj_%zIGsyI-FRaH|0aSvuIx9E&zA|gP|$DzP(u%Cu_Y1JXP~&9q;v zsd2Mq^SVGV`~$(7yH!0Bl$g%DOmCShHNui!W$zu z3=&2lK8%-a@f3Q7ajo(1*VOD;0vFazcA|ZI^O@~#bdC^|Rbd`x)a@Zj{#g<^CM~NX zg#@r~=Pm!br)*k1u96P@t>9U|$(NB|P^8nfl{~`XlS!vd@Row|@{L<{hCZDjc>kxz zbDlPUS=|-%(tS2>)|QwhBH&FX1*A9ls&=MUGruw@82&-xL0J&5 zp!YhM6gFAEpX=Z-0Q@AoRTQP9dcj-Y??6Hg)R;bJ!P;MqlSDG>{ZcD&1dYt+LJT8`E71J3)S3*&{>Zj zRtkMj+`nriZ99{mDX6AMsco#;qoEdk-_;tLc_;cnDU^x85H4`Pp^9S2(CE}1pLec) zoq3A&GJe$pgYT4C`;l08eWqDp|5QbP}`!-0$at_|*xa%C`XLj2tp zE{0~s!~F3z2Bt>Z-}LNtI+pu)AZ3#k_JiMNgbf!A(ii&+rUg5b)NLm5+e~YSNTOSa z(4Kv@!?!oXe)|iqI;CFaP(i2Fq@-mb7`;w-zSs$!s_DEOnn4-{fjN_hghG=_w+f~2 z$*cNbj9x4qls?>KJuP&wgm_iq)Pc{TJXhcxEvjwoP`{#q=H^~xZL)!Rs9iq9$_em4il(Od6R4^J}b1bdzba5`PmcF^3Dgr z9}K4-L{GG)U!y6X5vaXoPHgVT0=?BIuu{?0IJm67*Nf|s8Cq3?nWW$6zIh((nT0NF zgSIZB;0gM|IgTSt!o8pPZ+)ioRM3tX?8>EPkE8DYY*3lcGX}^TP9(S<0Ly>nUC@o$YIN*FJ%17InpD*_Lz>xE zso!M4TzjmFnqtRddsTaZBobi>5Y#s0J#Xrm3BRuu{umk+lCLu5hk1V?pYs}{ zz~hG1G1)HST`CH#Z%}2`K^nzJiJdH6@;?1_) z=+*Svv*&PvzR+OpP>`>Q*Vu_RO0%c*bUjVKTH+YS=)$*_Y5FR;c6fz^BGM8!S*gff zk}*cf><8UtDvw4<-+7+;2}~O+?+WnceWs1x8_{b(>=aCc`3x$S*FMkDr?(S;X7LfzWmxJ2R*zL$CqyOw^qC6IS5H1d4G{92nwncb5?bOocvkH+28 zT3>hscN9hjL^YnhkCbBbK5Yck@WEsg>e zrLM5O6Y3c^qD)^FIv)No?0i+1>T!(;Nd*g1jlz*G%$ez9sN=Y{->cpY<} z#jPY%WW^iLwr@th?JFDFa9=^Mld*%RjeGrN`Nn&SM|aok&Rkx(UxZs*P3&iS6N?qs zEPQC!!wEW9a}F-gO&s>1VxanNP}U3k+DIus-f|-AYzc)do=eVz;c`yx?SfsLJkNsU zI~ac+f!oiJdRl9v)EPC7Stl83_?G#K&ho#wYiW2AAc z-*=qZp1-BjkjUn5rZ%4-MGG%;s>^mXTypQ6qqYmS(tchb2Dk4r){vbvf$XEGd$y^A z3)RnfPOBVEs~xn(HOi0|rt~yZY~V^Ek#><9x9|boQ9c)v9VMdoZvPyG_R6V?GA#KE zT}rGTCt1$3XuI@ETq;TDzQ%;YR0&h(ok!$wmsTK_X+|}#1PFA*CV~fss)ShtNS^yf zz>X84m%6FB;L3b1!BAWsnZWc9L(i_750lf57yW1wtTF1dTLOo=I*U& zAb#g8A4Xw%)qQaa^C;xG%I1}bjXF|W`u(BWE-Y==$7aXwkL0sY>%~fQR?y&YMNHf4 zF!vbVcFbOkkI?&9EBgVOULi@Q}=?#$ghlOlnLgbLfu;LhAzo~A;)zqh{qOxqD#Rkpn^+-EqCqr~r& zp$eSx+Fl4C7I+F!!=B6FoC~zH8d78@9kbuHON5bt0B=fOzRvB;HAFbXA{^lQ-g-QG&kui(0K-83DL=gl^L?C7PY>LhB2MKiGB}7llhJgo{MYo8=M~e4=fT z1+@1GZ+uT;7s@%85$l>n-4h(*ikX&}Hz+AQ){QYWSIFb2uF=({>GtsL`*M z2&+?x?BsetfYA$lIlOz3+jC@BPO=L#p_?4HlBDj`wQakKD|8n``89aofWDi6kg{pTZXT`ap`im#Ca9uM_!2#BVcJ;u7we}mt^;J z9Pf1n)zHlu3woRH)HNN(b+1=0-{b%>R{RhzKo`1$FD{cT`nXJ+hhGRIKn;EyjR;@2 z=M>fry61s-6`kZZjv*$8&onE2oyv)@8oJUmVU8f;N}J;c+{XgYcm2#1evh|(elugv zb~)rQ5~Y7%+f#e7l;&Lz#9a|ydCE1yTOviE1`j4p4nqPL#D~%9yJj^sRwII;NsEHj zHhqU}+B>XNQ1laOa;@H7eb(#SOeBj57qAFmpEen@T4m0wJ5!eCs@HZd$G3Ox62cC; z;ndqTjetMt+XQ8`J!z5iqtjVXB>`i#U?bmmZ*jzkT93G{U9A~QXA~MVYhHIfixm!;#qS8UR1GWmN#w8vxaDL?UnlA`}UJ|_?1Hs4o~A%GuXMH5{@sb z88oiM)&++1a}hK)L>TjJq3(^o0Xpv5&!Is=>(AB|_?S_?doD_`4XHnKeK|=;@61VS z6R&emggi&wm#<>ApBiaSmA~K?sodW5vWW63jB$@njjRje6>v4=y;+&=tkGnoc#f#a z3@N;*^+K|cP&gKauN8cmN|q2rCNZ)oBvL>2-RzX!z%J<{Wfi*@GV|x|_Ab&=r7N5U z`rSv~Jj-!Uz8e=S=Ku3&&%t?SuMk$Ms=Z-Fzuh4nWq&rW!zl8z#w?$H;9@B(Oseep z1*%5`<=ef8sc*80xvHu;hzAw4paZ@Kzr_}SFyn-ws&AR_WQ!U^k+R$oA#uGh9d#h< zwnAU;E$`%8ehZO)Zj=dd9x#VdC50f!(|*WQ@s>ffXZh1+r>!kQ0RaN=VKv!VN73fl6 zKnacU&jKkqX68>Dv1QIvK4A|72qrESOYHwdV*=j`K>sqLR9R?pGHzkGVFSgT)WwL} zFm4ya#bKV*MB1)jYV0QpSsELhEays?dQAm+D~r{Tw&a{NNaOn39KJullI9wZQuf{aqo zdlqV}Nr+u*)LAlmyqfQcn^}%`;OT$!-7}lr{>SNEkv^ho54b~gQ49T{Jg4uwFx)-Y zsBeY=VU$*p()GJb@^^sit1$FaA(IxF>C#NGTl**O!RB5yi|LV9(d~FP&o_Ci+-{`z z;!889q=widX!N@DM@G;W{W?6oXRvkhjJ8vFb-RPC^_|j{-2vj&5qNnUCT#fZ@rWKX z1VkHnnURW*&T+pAVRw7ts)hFO59h__si4oO6SZYcqTYF3CP?k*80kd&nWb`C%pkGU z&l<4p%3jSz@}7T-ILG*#UGXc$c@vn@Kr(7_{W?siq(#-W0F}E;=Ui1313sPb&LiQL zP^Z8VH7XCqN!17J-cNV9?Uthj>1d{&fAu*&4PU4jd|wBE&Vpt@0qs&=(WB+eT)baCXx?}~qqn;lKY-$CQTv*=>yW}~M%LNtR)7O|2SZMaYQNQFc@ z8&7ZChZ$gGjFuutE_QnI#vGsLfB;q-5U7_owQljuTkJ=&pss~8MGG65o^R;iVtjvo zB(GPPS7i&VOVxezPt@z^2|7c)kykLwXjSd4oa!$Nx#sO!NLN?gs78H?Vvb6pYAjBT z7JHWy+=Ya@9$Su^Zi6NSp$o0-#wA6`tez}|Fw0}W1*0tyNh&G zU!OOr{4E~;(`R#?R466+rn`u!AX|pHSBNWOutQADFf{1aUbZh1SEi6%^<<-=#-RPOiM8_ zX*;^I|3XY5p!s|^O26OgQHTR?>@nURt+5vzbX8d$+7>J20oS7$EY4Ow472Xj)xke) zwA=}fiESzx-rZXzgfl*^NrBdf*w({NS~lcj%j z)Zb5mXZ4QeB}fMGjhVB5?@4Ln^&)LC&g${A-d;_mIPZKiyIPx70q@jF-|H9NYX83N zA2q;-rFdqaTL1dXmDZvY@EvWJ z`Q?~_9$PF>A6 zj~>2D!h9q{eA_+Vf8RV$WjY?Q@x zy5!LM#ag;)K+V~|Y6BqcX>Rv7!;yD8R{HBLq|p6ApI%6Utpn$m$tEQucFibqWXUEe zp7V$u%gF^mRw$G?=;%%%13qum3oa$~tqu+wZQ4%Ns0S;z_z8kiVa!=I{?_cV~0|IMRbGaDe)aDhRaG^H}Y;j$!6g2^{uXVViz7_OgXcBnp21yn?oAmD8<4A@5I`dDK z1M-z7@a=`(wyv4$g$8e(U+;tRU;eq51whED80489iALy(va+pi{-&lTy(E2!eAN~= zH;fQ0&aXwIVs&U4W>9(k2kgM|yU|nHQx{8SIyk0fncpTS+pESD?hvr$vbn7k=)PV#0#=O`v8Bki7NE9#NSoC#T@inF+)oi1z^fTt$x-mP>*6z9-%NKZBA6M}291 zLXQ$#(-t6@iRcwK`-2ZENdrMm?Y_*ZL5viC z)rOUq&?xM=yf#6(lgLfjfd~puc=HLUvQhN@p1b<~+%A>} zwZ&=`!C3^Lb-X9yV1}O`r*Jt%AAsezgWB~6Oy}9>3pOq~cDu>-hn1+{bkooRUTd76sw*zO zAAJN&y0Xw;WR5*WnEcQ+2!t}gtA!-LCKILdJnj7V?KJ~+uC>HPe+TN?DbC{pdEscI zfZTN$E=mT!ig;yk;9lD=l#gyFgTewaB;r;0=%=(4u=n8;QW7>)e*=!mABV+BdZ&?+ z=bM?K)_rxanp$Rk^iD2f%B7Ntr6Z(CP9ok*yg}-N#Q=(u7U>?@DG5Z!y|?39mO4ms z7Z<*Wdg2W=$#`-;gB>v)J3E`|Rp;>M{J1lkAMW59TCzH@OPQ5-_EOreK;3TpsRH?^ zWh6;qMf_YDl7d&$qO($2Rp+_e_JG4maV%*&r%U%HfM}|aowo|ORCeawbaRxd@* zN<|Xv$?`sD*H)gmt&_DWbHF>BG!J_e@Ob03C+cT`?+FE@dO-qBARUtBg#JgTsh8@T zXv}sOH<0L99w={_7(spM;+K{dhn!YWCqQ=;r{p?dk7ybIKoI%!@6vH8*7I@XG(?Tq zU@K*Qk|Mp>1s7zz4%w|ZCO~GdUemAn>37(T^MUdVgg6{GH`3`@JV6jZ`Zfp9K4|wO zh{Nu=fH4VgJQ01BWZDJZ_ePjhR`@j=+GrJWc%2+;F96qv1)WfwR>H+(swi*8#w0=u)x&fe3co z%XO87s-=3Mm4A8pwgSN8_nVaQUY&<{kH&-wy z@8&dyGh*j^<;O`YDBiN_=D$*pTi9K%hzpYq0pt(>K>s z$@hC}3i=Oj#O5+b+1r!d(w^!QAYsAs%QdW8+rcMnJQruwg8L5Kjif>v99HT_F8Um> zIz)O*{quYf zR$mY0?cdg#iYkJ|mw3dMjrj?RKM;hV^lg{dbzy)`V1~?Qk$pvCPL*awa11ofp4h+* z8E34)_13Z|I|NhSjv14C6mr7=?2+rJ0Ea1*xZfDw`KS;t>)&eaSE0Y%;wRf^U+tyK zx2ZV7yXEyIULr5lfg^rpQtT>A6!b?GmDlDiU{^+_aAL>GQ1ZlsX+(eg4ieO0&UR{@ z{j?uB_i-gK1!A5R_Yd%+GeM~c7|HiHJ?7rRx7EK%t{LyRiuve3 z(ibmD}igy$*MkPRC)}K_Ew$U8L`XXl;4xyLB>Qk!(e-cb} z_`Nh)S`2Y-MzC?mdFkoiPP~rJt*4KQZt0PY$C0%ZoShZKapZzao^$i)o&!1sZATq) z3EeFu%*n;lLs4}AjQ6UKj+MS18N+R0&i=HpS|cH8v=kf8YeD(gPmd`vVktH!jgILYVG;HzWcg5+;-^`yRnVe4|$Hl@aN7ZSon$j#s}i6?%vI z48vxPc7sXfrRyz5J4;^gCE!213row51Q7<=I&T(ZdZ__`lcn%<-Y0B8ggPOVOCPra2l+j&`Fcx7KYTVAJsvQyq%T&p`%-8Tb>EP?E!q$T?4~0 zPnpUnp4|TZPZiXoFh%zw$8QY3%xc-a-qm`mdA(4 z5i32yaZXPa^rsrzfeW8C;wu2_1l)1AfeK|%)5dZF`l2*P;B%#se_V7pc;!A1buj-7 zGWME@(HI1B-Gn0a?r-9F1i=O33gz%VQKIHxwd^;4DIguLFX1qe-3X477VXT;;l8g{ z4w%h@gTZ*c>{E6J0s!KDDJk;q;EKFAadn|D@0TsyhtNKWdy%5^VsG(PPd>cGt-@np zKvh+>l7Y1i+r3F+;2i5K3MkD4NqFGMv&m_lOebD+2b+m{N#CO6kbI>PykRFvrmP}U zupb`-Hy7Ai9qG6eneZex*ZT0FlYJNmKxDXN{Qe7+;>Ewz&WASOcNT2wyOvpCzXpfh&vrUk6*e0NfA>6uv(RK?)gyNC$MI?a5^1GwzszoHIi3~(oThi9WJ@8UO6-;6LRC ze5%e5QDGI--4%}8y|gh= ztmakV;{uqI3z+NFXRbVqn}+q2>343601$0{)U8}x!w%s5t+#0KLMPdL6fEBN73ekU z*Eo0Y`-(sIDyk;+uWJ?CWAmyrvoi5*RT^Kkdma2cYSa|?(#HaS_OoiyQE<-Bv!lEf z`vkP}jTUDLob-M;upOo`@^m6TGzBP`sR)fw;q z0QQ2Xb6=Z{s$1H`ac6$?Vb2DW2tPl6mL+6*ZJdRh>Jc-f%izPEleW0S;GNEwB19)@ zLzMFfzfFJs3Z*=Q{=C9m-0N!qd~B_y*M~Z*=4KC(_S8^|u%i=jT&1VprZ+Wt*@?UW zgCpE<+BEaKTbn$5D5`HP=HpPmqk-0y>_Q&~=5F|I_Qigr5z-nMRios5Zd;AWl-tz6SL{Y)T#KGRcghNzEfqme2A>DA_AL4$PU-M$ zw=D0H@8$1z7yCMBwY5BTlw~T@b#_1j>otfX+Cg&9q)@qN?R6j*y;%!;0Smk&FV65a zhp&5cL6(Oo?(##L(ihqy@^XE0%kOHam`u>?@Q#8rNVA;8{>p5yjtQnud6MioZA_3- z;xIC!y;pZukl5gxJVv3>_Sa2Pe$Op--V|SnA1?l^j&0V7udOf{gjg&tq}ji_I7&X_ z!39=nS`2eyc5*Bt#N2|O?{m6sc--c>7l)%k+k3yCCkZ^OnYu?oUXTgq%Y)>Vq?awE z{sgc}Iq0?KP(M~}do7)s{=q~F@@4(XwZ%ClJ#yf1SEyf$*pH!dEd*bm5$TKOcHhXQ zoH7~$12|bgXXuXJiM$7bAB%9>I>DPv74*1JjS6Rh28CW3E|yHk#l)Rj2KQ^qam-GP z0?&u;u%EEehPj_$)xOoI0iFnV@Szr$fCC^RuFHi#Ta!pL`Rf-gI@-UVxLK|qc|l53 z#haO`TLn2xgtb=*U^!$jXK$`y#^n+!tj-Trmi*P*$5WS&s~RL}L9*-Hbz2?iSNqdW zFq%{3>(~Bp-~V`&Qr7E#W>8}Zu~Wde%1(Vanjj&3mpRVp=ZC)vU`V zBmmIOu0jCU`0dCh6EQ!^gK`%b0J6SpKn&h?Cg||WmGJSU zpBc_*oyK!5dj(kvW}{C=Sf-sh9Oidc?lNY6(6g~I9eKDsUwM(ZHXVQWx7;dO;8_^R zJ0g|J(2~$EWH&RsdXVbsWtSAD-zrrTxE)^=GkFkW3X$9|_sJ|<7M>AbBRM@%zRv)22#oZjq>P&P{ z#G_5#Hin9UE0zbQgM}1RpMDGL^IKlaf8W}XVWe*C&zUex7PFw>JQ_!N%ji^Zv?(U} zFOnQh3-rpZw`oOl%8y!?1tsmR>GhfH7p5HW{^Zdiy z$puYrttGR1YCEH8$F|p=evZ{or9_7+mTNag>_9`sXDV&QGfffYuKfp1eykA-g+Fur zJ3b`E$4@f9$H{vhr3=IToBoP>bHP0e^I>!`CwYE zMldLy=8&=L6uq0M%~It`oy>mfhkOaX)F2iP$48W4x7FbWtYGS=^uWDzR_O(lwPUOC zh-|gg2^Z0m*YrhEj5yyj>XLbbxJj)X-JY8Bq`yu3d>=!;j$uStVGJQ-@j|U{k=>fF zi$lYOO=OFWazFM|nS(Y<1fkkZsVb=Om0rbKf=EMY4 zqzqT7x5;3y;mIksI-AvjaC2_VAqld~ z6Xsh5-kF)#SV7&yH##>w(l5kT!NdfdAq^idQ4;XNTs;;dqRS>T7(+L|vX00&Hc$C# zqTQS>fPqt0-;6sglN>|_gx&eDeymS5*l6oL6&>oJ7ODk`uWSwej4-RzLK5Lz9f)?9 zVxtWG8`1Qs4R{9q-uQyD`4HhrP-UB)U*rdD>*@kG%53%`*yFL^E@yrrHbaq)wR;bx z9LV5G-}>#*{3HV(AK^0CJeRZ19>5qGy{OCZpS*PqYxC8A|8CX{91C#eTuo@(msW=# z&$i{1Wl&NZf?(6}dT`BX*_)cQ+nj=mMvPH+QhF9o^K{)MXna;Qk_$=~{)>TPN(#ZN zs>*cpzjpx)C>+QZqEAw*M#(d;&F#(RZ zBBBcYUp(q<TOyI6>iHxX)|*hKFG6`F-=B^#t9EbH!G}|0b+k$;c#8f7)S#U zu}m8bXD)O(Pw4(W495d%6&FmvWLLxKe_=a{so%JnDijxfKq&p@lm6}cUImWuw;X@_ z|Lh1q%fce1riO-XSMpz~YHCWyk8}aKsz;zpX^DM#+C2hVIndPlb2cD|Vt|aRjlr#3 zX)6^Fw$|p~M|p&3NTj34&CRWVW9;GGseXaN+0a@VzOw-!NZ<-B=WqC}U+4#BZOHcW zm)6fBy%0#RxcQaeb;~a+JL)_TZsDELalCw-4of`{p-GpTp*vpie^+I66ZXWO`sy(Z z67(F^`}gl{aVTH6x$a8{!|D?4LgNv@)$kk^PJ(=XmN5f4M&8`W6kA~z1ElK8;h2gm zYVmuf0YMbszJ2RYRScf|q6Emmm+y+lf?;hn0b=ADnwrSRjUhVaHrnBlk-IoNa$nz1 zjv+8$GVS~I;}z-x^bc9dUWSKnvXe2%tp$+!9Xc=@laIo9nb#U#cIA7cFG()tC1e;+ z9ujG7KkF$WRa3;5mUr*mHVTb9)@8b=D}hA9E@7R_rBhvgI|^w~+3CMn*-YOJH24M% zGF_}#c3Wqa8Zsg6=l2!DS~PlorW;Ro`4hbnhPmnHPoLg4>U{8LY>k{sB_ZG^2|#W3 z=j&CNHc)tP_rZvjesEL_cchacCHbP1ZAn4W!;)7S;EIAIS><|^6mGx!ih7c@hyp>Y zcl!JBgly^!2C9e=U;I|_cw?wRxlP|er5}Q-JsdyuX3>E1;rvJsersVKuXG!oZ&bTG za8{j&U8&lpfsf=VZ$*C$Kc0u>XX~ya6KL37uS=YaKmFG8owUj5q`&`=^6k8#5pWIf zY_#q%SpWnUXE0VpOW`EbqZ}SPG@F5{xO?&7g?0|~Qg+|R$m0}p&vkz!!x*_Iaou$M z?B5k9K3iqn^=z5rEjBt=HGqPQQ}VAN)xwiZNE!Qyr-+3TD&gw2;cmGr$EKQ@&yHe& z=Isnk2Y@3Psc|h$a6k>J?=JMUcY%#Zs8k++AZ&@yf<)r(3rxvKd#<gv0ji+u=pL*eX!X1Z>& zSJT7ZXM)pT2ekU@XKlZMdEIst{=;cFVjFaTqK)dM`}P>GYRo`|9rgh^neSrduO2;H zk$=Jd!Zr2lSE2q-_cK1av0ad?R6+HBv-5mF`-JyjQui{TnQoxW`h(p_O&@R`7FbO1 zfub}CyP@8;>Xi-8=!4!`=OI|J>&cgyLEP;!(njZh2l4-kQS(_-g@+L9o233$HK?oU;PB=wzC@*PLGZ+)!S?!X6BI>)yLl_zCFTmy^M@3?d|P7dnPRW z*0D_^^(M6z?%_Q?*qG+acE`-m-rt54fisKCgCC}X$gN+LtL_9J6JRomhk&lvFSpTu z!NAHe^(ZGWfFg|d1mf^jRsnCbXd87&@}k3!^$9lJoSW`+41>TIl|)nbVc7ZI9|eVbkh#R$M*H_ z9058HnLpx6%?g|4ztmD7K%V7gWW;eJfzJrwiVB7}Vf(L=qq~AA){Czn7otp6fGhJg zCW%7FOa6CK{?C(gkIyKZlV}@@G=#7EY-MUA^#}c)?FzNzNBsxnqvsVe;!7ykDSU`D z12oVbV?vi5RyUS)>w=m5sm0$iDMt$-%I*lhS+}usk6?4aA|i88jn*|ZOymL*CHAEK zM!!*Rzjd?40aSSkYTFWB*$9{jnPvvwYqQ{uP1I@&J|e;HTbl%Mn~;3NC3*Rgm}@4> z?r6BX28xp0bD2a)cHeWOmTy_}z5a)#dL&*CDSp5^rIAT32jUNx?Q917(W^1Y4Y)dx z2D;(!B}&h4G)*aVxqH0P&kwjrXk$Py{J2m-Qj31UQq>R^It7N(Kn9~U&KX@=z=a+B z?umQR>H6bmw4c{b5O10%C1H1?hvZG9Ot|j;t_zf-QT={;WLtH`KLKC9FGzCT(n~0tftU z5U|QD`RzFoV%?9)tN{aVpOr3BroTd>nOg%P#m79wU;f*X(WEySvV$e86mj$+@V>8s z%YIN72uQmTR6DJ-O<%qRx^6bKKhN_l+Gjt{bq5E-l>>ojgPO&x)a9c)hE}IwFZcGg zGe|{Wk+Kg6o_OGxvFwWfSCgKRN+UBxvgxc^|Jh2fy;%3S8qvDtntL~LU|9W1TMJD~ zp|y7X+DY)<=OmrtTb?As2#^lSDc1D46S4wZoQYUQapRu4!ZELJQu-a!CW%%QFXB&w z5@*ynyfQL{wN1>ohawIQMySLDKhI0LKehm+T5Q{(E|U)6tJtH+F>q^V6(- zdr!b4)1NA00AL2M{or`N?A$Dn;lXwxW}4Ysk>L%%srUbny*G`Avj6-4ttGOQa3V_^ zB9tsiwj?1-)+}R`?EAjXj9n2b;j~j^pUJ+@kf`kY*oSN}7z{JEF~7rkUEk|p&fov; z@78sbc^osx@i{)rdwITJZ|5jx!3HIzR3Kkx$9%MBk7^3ND9*??OQ@SV-_h0(4Xszi zDBjyF0V9D#Ti`s7T-6PKj&QCD(iu<)TrDJz#eo73@6PhUNJNq95pVy#s%hd!Zqntw zUyVCF7f1xMUfizZ$aZ`8gwsH!tiscr;D{35p1bjY^iM-@$J4C0Prex*CN`Bl?>-es z$g2qhZJn6dZd42a*_I99KADdAk+o_$dxWbu+@dsEs*|3j%Y&0j#0Wve(#+95cAGkF za4bs_xXH&n!Dwv03e(9{K*LbCpT8#?(H%KF?wy}x_yZd8WLBqi__e6S6<2PEUvwzHRV7O21ajvJBTnG?xeOC z)b$`OAyLX5lOglBgy@#paY?^o?+moW9ql{+sAvNB990a^ViOoXXfvq+^FFb^(f;Eh zZ|Kg6m8y}Wl;gwLx0B@`0M;+|k1nQw-LiQn_#^^llJKzl*&ut`J*&*(JGRxqS<{GQ z$4i)Xvu{;D0Rk*d4>xG;SQl;DI$Vx|EQyf=$BL?aCLpkl(otyS!QWD@?gixtBcCdl z;z=M(GnF0OuRoP|84-=>vE5In9Raj!FdB$8v3ri$NRJ!7(_RsLG@EhU;x(HlR=hXN z%fFmHRb*KD(`*7qngW|sT)kEq59DFSG|<9`fqGT_oi?g(pE^mXXDc$5`L^Auh>eV7lvdxFt8FST0!ObJM3P zW|C2xylIMp?Gx!N%M42}{rd+Zvj_Ud(b+FVs~PUoy#mc}$rwLaFkNcAeR|hh+X3An&Y%GQDdZyi}HwwKx*qpr?ckRDYM3kCI z?{uQ!nEBg0+jBMXq|T}i^0ck)ZiES6iV5q`{>eokdCjc^p}y?%87~2l-d1YL@CjesEy6>$bI$g9a5^IqcxWsg17DBZXg3b=rktfyz)s@tvjgTm;XVyLDqLBkML2XzfQGe!vZRl{mwWYCkabE(Q^N-?F6~0I>!jqDtEc; zEr*TO^M$)2mXEXc7JhRoibB~?v`5Q@jJfc_3a8Y-G^IvQ+-yCK)8omaHig?c+NHlh z*AMA~eosmQ)<-(au>{9WA*bdhUXV7uazsrnv%=c@zC$&bcMXgu`{8GFHo(jXd6QbQ zFw1~6&8R<;8F^}a@Z~N&)vs6zKyWdGnLXU+z0~GJ7UtQRGbz^(VMj|0W9;9)@oBXx zqOI9zR6$%@E9}`;K0eg!r<5rSOZbjZ4ToaujmsJsZ)No7=~($b0TF8cQIrG+bk!oN z08$_V2&mDUPx>wB*0>N_D7@q7?Sz`MKR8i0xz9q0(TdK954Y$ld+k)Qc4xy?#4JC2 zzy{1G`yMP$zz;&eN$WlOl&ovURsxea38290&u11yDy0|K+W0h!&pR^ua8H9lQQzH> zNp^{<1|Pt%{pSRj7Mc?pf3z7$Hb7c^CK)zC#93U{!4{}5Xpw~v)^d8!!ixDmLs z#IdUK?TxZ^@+)05t@xMtoEG*(*&L;2$MsU06{>6*Hld2kqY9&Q=X@El(gLQf0p1z5 zgoUHvf4#UjRH_3~N_w+wy>4|EmmIm#_jzB7vmmu@mO6U|bc5!h_D5zP2XlK(Ksi_e-QQkgLiozTJ51kIU&J0<8wwhpGw7TnOp^2f4SWYx>B9}I{L0luK035F;x_?KU@S>Vu2?KuhgQf~|j*||~6Tpjlp#1Da2^$5KV9~K( zz0>0XIx%(V9-IUGYT5{slmAaIp!z1y@>$S6D|YvJ$=YO9zCmhIE*{f>3y$TL8+#bX zWn7Y!VB1yoO5avZJ}T5t6j=TW2M+g#NbK!hlRXVL39v?@`v*|(CSlI+w{L&X783rY zQP*$-?fj_AJz2gX^F?>6obxKHLB8B zcq-FbZJ}PD=_J_B{QG7q^yD~f@YlWU_`;w0A2cSn46&<#2!?4`KozO6oe?_$NKqb2 z^3k&H0$K+8H)keW@=XDvf!)d03AFkjk*U(&X)%l(i|#5%%bDNbo>C!;5D?b|&b7y6 z1D|#6EsPeo%x9zSwB6+mW^1O`X_BqS2!EZ&!m1Pc{CJ@XH|qaad8*ZSHsA2lQNT}0 z?08v*s0FfPU|^v1e#90aAKEf9Y0dXItD^5yx2dJ?q+gw3q4^J2{ITLw9`;!A$?`y( z$8=(V%@NXBEx`uZYc?OhX_XBPNy4B@XV+bMCaRct6y5RC+~l>#nz9~W0f_rQ>Qhlk zA|M#4U35L@zvQkW8Qyt0Wz~@e#T%`=)1<4l(rWfe7-%bViRrL#j&s;6orkeCJ89Af z-d?YH#Xdd<xxj&F|o&xbs2J zl+V$d!5az+VwH9Pg#%}3xyaW@x9;s`0Z1f%2Bas>o5}<|PxrK_^ol^$IEeE39HjuW zf(I2HsiCrCFhz!RmNb*3Z z8xjcZ+mqXXcee&BQ>@WgS72U6ch-A#o$b0|fgEp#U^6$b6ehjV?U9d< z@iS7FPo2{J7@OEq@0d@YkQ=RvhnFkw1zlcv6z$3h2GlF7+!7rPSquwP?pP;*wFVtz z(SX#GUI9H)<1^{qg5zP?1uxx&ZTzi-5}$6ak%5e`9$ea)!LV*pO`P$^07J+BkXE~k zr72@fMWdxAH9t?80D`=V}rp0&O|J(kg(9DPCCuv6A0ARSA{eHayzAWO~I|p+65YNCe?1?Qg zLHz*Kp13YbY)`d#C;aeH1U0KI#1e0lnYe}#w$7%~c(m*QZPYgL4FK6?HfH{4JX+lD z5(Cw>pKjZ}mlPvz3#h@ImA~Sj!QA<~pOZaLcfsMI5>!l+?P=9&QNcj@E%#y`h4fXC z?xJ5_3Wc$bvb;0N@!q9HMSmA1)G1>%>iw@FkF#6S0QPH$u zIyWp)sxTv5WlnpTwU;^VO5M?+_t|`@|<>oaL`?bV&AjyJFssK^}CX8=Au<1VSIb`|i9gS1Xgslu653 z<2d{!RzS4n-0diELu&jgn7FeMzT zeD;p`o%$a|E7jYHd+q^b3uqk`SCyl6W_}i+31gW|1)e3|w#PvyYRJJ6C}EMQT54HZDqy|LqWh!DsooLRm`QQgAF3SP4WC$>9CKEN>ak~O z!ufO(m7PC!qz^Q+Js!oGP5_iu93PUo%3{eN6e4Lq#9tXb(BrLrK(s}CjWl{G@ubG5 zR9EQ*qS&A)(ISPCA-QDZ`g8|{F7Xw_C9CKVbxga7J5VaP&AcIJpgl@+DZ%g2vx%=&zK}i-73WS=ngGe@?NwS4jNAn_i4GRA-i8+%n}&*I_yP zz*X3`1OC}pn*f@O?&0)TrLJkC#K{WkRxJ@!x5QtmBKjT1&~ba z#(5-pV{dlwEjj^xoAX95)>Z5fXYdU;*@(S{yJacAryoMziN9%L*Qe^KfnbxQJ=cAq z!7Y{>cMPMY0U&Eg=N>BW1A|Zj08L(c|0Vr>r8ufV)`lbnN7M3)Ze#wD4^W~5By0ZEFMSj&L*FX7 z>9hNw5hh^zqtev+YT`0uk-hx}U;Mb=@O& zQ7UZYlrdNY5?RyMPO-0!)HNykRK{oP!J)fcu;VH+m(`euP($z7{v$SnjzXY#pfOWD zHj1SaGg-~ka6hU$h?jZZA9tVo=Km)&21LQHJIhS%hdTA7b4qF zX)#a`QuCW}O)w>djB1jLkFT#MDjxl~KYAu`)K^zYiIPobl8qyJq~0>o)YX|ZOsM8) ztl6oqs;=Jg`B*(NVpRH^&Ah0<@GHpON=Dx_WiicUo|dN#*Yp8XJipR}rmY zd(fqZ3_JuX2utrZK?+XTTencdEMGHg39FoEH~FNOwE3`kRiR8(+%D8_AvP7$n9LOOcBuA(9& z=|ftxzwPvsL4S3G8^PqmQ+Dy*XM~nFt1vs;ns3YdBem6-ZB^Xk32%t zEOAQ8A@<`foSy8v(KYQe#g|L7qu$jIV<*q_HogcuO~ALF88W*R^gSXj#$dhU$mPXe zdtlbC?4`x`BqnWz*1DD|>Me|UF6-SCJ5!htfxO4Q z@+w?1PIfIjI_~KB#LH7Us;D0whuzD*+p94MGh8O8a1SDX!2Y z-|g0DSmK*fNBw;5QtJ?o=(5+7Y=UYbM7X8BEZ^qUP#@@x1SNOV1bp+(8KW#liHJV!OqPm$!6i0qU(Hkv*W z%$G2Vw{ZX6l|?hORFAnUhaY)P7H%Dg=+$SMy}nxADiby0+0pJzT$^fj)tB|cIb1@A zhiY(zA)e7Rm={+GSJ6}1mAAf4&NM3|9c7otQ$hj{WG>ll)fKwJE+9oJ;WfN8Q(aMv zoEOGQ*XMiLOg%j8qE3ZN5IP-;7F zx^DKnoGQY?^ap>~O_67E>x?=csVq7^xHa5lnvhjUb>3Cav0gY@7JlCQ4jl{5up8xY zbDYL4plyo4Q1(!IlJy)2ISFc z2yRYnU!Q`!B4f)-Nu6-2TY;0G&v^fcPugBJtLHrUIAvUk|3GqC6n#1`@)gYKUxt&- zkzsqVQjS=vY1_Hq@Ak4|zBI5Or!Ts#tcQl|*t{A^T!Fg^^%qx7tF9}tx0w|`m1B#-3wNaZuN%>VO3{h-O|gao zhV)ho=dhD=V;qGN+|Z0@LKGjjJt>3PX8eP-2x;_)AxaI_ptR??b9kAS(kneO#z6AL z1GddM^~AlY0$){04tbQ--jr%RGcD~GYU*#Ed@ZuaBfp;}H*#=h%lePTGE!>U4^LA$ zFtJ`!f8VS?te5r1pzl$(n4LNAz4pQ)A2cC-G#t|(%KGDmro`63%_v@L#OULP(D^@h zOG823k5Q)#rkp*kfA`Xlsf3kJN{L$RPi18598Z4aPz^*iQb|EVJij|f$JW6aHb8Sp zS6eLdMCe4R8xUjCt;k}|J4u}J=Ky);^Bq6hPVycFV^n7#5X)!JauyaBO`be)??yUm zM4kNJ=rb>DY@Xs5$C45g*^Ga%a?$CsWLtN#C#9tHb+&tlrT;4x?#v=2EL@%el!gG< z)X(~ia3)4w9g0v2cX?**-%su1J%;~7@XExiUm;n2N=jefm7n{4-}&c$9bN+?!G#wR zqB}VfhT=dfekJw?<%w%TxUK*nwBMtr|HD!}4m%Aqu+S9*Sb3bNTU5$!r`yOx{a=1X z3B>Zfv$H}zkT7~gIyh#zMk?*~J9~Px$4go19&t%=o(Q%Ld4~Y3m8rV=t15stx$E_7 zCXAAv{=$U|Pl2&W_|n=JoO?6j%%6{<1me)u3I6cma_5g9W$m%tW&r{9;FX4IN0`L< zkl+_W2`8bS3=Z8+6cvTNy*=`DbFKT_p&q6Rbdd12NQz}+H=*|_IcI6SaOw4<_NI3y zE~TIv7WnLovryyS>aF?42b&b%0ZmjXau%8jFigT`f~N=>?$SSh;!6W-#H43` z*e19m{#+HuFQe)VP3(+H6jRkJR>A#CR4sZD^aNvX%Hlk=W@;E@C^k%}GV9RN$q>Vb z{=F3I_-$vmpRu!`$g@o8q7nc?c|N35gOe0wJV|a6d;T3U^XrQb@BS4)lrrRB4har~ zZpvW?3O~jo*Naje?$`ZmO-N97pK+Uul`(}vk>H*TxtflxXs_AaQ&bAz+R;zFsa8#a zK(PJZtslG@H~VdRGHq!iA_yB+I^&VCX_phM+fTgmB&+IV6r6qOrS5OJvOaWCCcYk zCrF{;H1B?t{N_-FG&ZboSVH}N*OzkElWT|O%<5=aYqcxJr74g|Krk4Po;FbcO6X2w z<<=wh-i~}%UnYXASEkB((8ye1T}Rgc*dUL8dS4>Ol2^C+$M$*rjy-6HSos0cfnC(} zg;|Zu4kd-?f6bKZ%kos0rwmwVUscBcYs`k&DH&ripPz*}kCnISu#eWdTOBWrI379E zhYue{)TF%RrBu(j!avT_&&{8DcH;K~64+NA5`u*fK=oektt)c7yp$_v-lU{V7WsR4 z7HjFm2cAePD$U%XeFxfO7PlE#qND3g_ddB5vpj+WJJ5VU0{5S*7FbF^usYjx@5jZH zgE&vmLiY$RQ+Hx-;MXk$cH*MMtgaI`4E%)BeQL_(WqTt7gZGni{4ytRVkH>ZCR0*4 z-7)s#my&-XHO6S^85l%mWO`|-qglPx;eVW@|IEQ-(rdB1LR3UVL@Yl16xC1RGlC~s z-C(6ehO1t7N{PuyXHTvKCH`YL%YD=RUjl4}0D{F|mC2EJlJolCEB<$^{wIR*|7MoF zNil7cuO2`W2vO3WJycjsO)|uKzU`dO(M0%?6FzATXj)-A_Bn_83NNek9KcAeE}_V2 zCOhM8t^d#$0Qw)X45;NaTk>Gi6Bl&Ff) zO6#=PrUPHzTMZ_xfxl`L)&KgH%VAL=I^hGXI=$Qa^d_@UxiAxOqb6N$$=NQbzo0r?L4j zM9v7_KTAB$ugRNRdV-I9l~ zmTMyl`H8W}eR{c__eVYlFbvjg$9uEpQ}<_1G5(D{+&a@jUUO?N6mM)+9Z+gLTx{Fg z``7cD$(zEJickF)V(kg5nh2mdORD^K8lPEfB%_n9OD2S@hT4pJO@dji&L?ODa?>o) zXzrZdC4u>TttW7u)bwl=Uzvjamg6UnQw!uB>i9ZbpcASSmpsQ;Z4LimVXn6t`8ankyR8+z zg?xrLf{FVcZTmt|TZRL=w6s^JgK!B~w)&D~Fyybaa-R+)K%NV#V*CT`J`3vvOx0OE zmuU->R&VzAL=Z8L9Iu`3blP0OV|;$`VJ(r!T!*7InxSGr?NxN7yT)=$RqmVYIL$3O ziz(p^+|-j!%+@NU><%hQ$ieo;J)H*n@_}MkEqo`kso}tSV-ttQRNOayVi-K5gWAuL z-<%OIeHOM4CEga-W@N&5N|&0B>cg7EC8xn`i_UUBd(K6T!k~bol%oc+9wEn(yahu! z!fJ^qkVwF?sE+?Z*oMksy}*Iv+o>*uj&H(Q;cgF4Iw5cDWJ_=04C=w|cl*JP%w4?r z8p;JVhBH(>SOc8P%tMIu3tdGy+fmEFRUP8EBHv-6>kqUtU-#cYf}_-Tn=0Px(~Udzd6%A8c>DaM)N8nWVV=61UR|FV;Z4 ztN-aJ^o0o9b_~RQG=UTE!}FH28Z6$>(=+W4Z#a(^JKFuFoSS=z0?&R?9upeLOQVjz z{6K@T<7}09!7kRK3W{UKZOHSPQ<65qdpX2?l|wN5vYeMeF()nDLP1^Y5Q-<}zQcJI zfPC{F4lGPsN4KsYa%-69H7b+#k(x(*QyWnm^heo8d93sf z&|pB2WFIdXM;^gVIimn=JQ8unYNHtmJwzhOvp~l>tAi@u%2kAgSpaeo)c5(-qw9VN zVT+GOVcE@m1NpYbGH+)E6kWdz!%qiC3Qqce6NP4dIg^?Y9R6p_Kv#~2NhZ;_g|zL7 zr;)Uu{7$HM-{P|3^GadvbpY6hJWD2A z(}Xo9G(*T{WBT!TwO!f#W`}E35|Rx`9hi{Ay6bzo>he6# z+TBOGyXYxZEpl-1tuNnf)>0~nZVcs5l`Jb{ct8^pzMdg>DtW8Z$mL}#2y+lg+C`oY zQb5&{&mHVBuWz)98oW)$YhjMSBJOzB2b#AR#Xcj*OH*QWZq0ljGAZ(zIcL@c?%~TZ zi-8`av%IwQN^ee{)=^4d0%>TPro-UtR&YLhpnU*S6I=&02N9P0tX88_sfmjQdang3i2g#^ma9%(UwldXkz4KIQ@Fp?z zD2Q&$k4G=E=vrHpl7-1=wRnkcHMhJ#M$4PxAvUwd$z;ptDxl&_?rJwoJZdTIYMYDD z13*=PCXB0>FVo;*(~9d?+C0khRVyg`?Bj-o{U@JZT}a%Hq-Y}CY%m$z&{x5#=&bVr zaZ`)X3D>$FQ|VrUCwKaSgBuQuQk_I zj`#X8U?pjEv|-^qh$R@LjO2#QE~(YqR64gbQnlP6ZTat|4U0B(B|>tsU0$V&bA0>x z;^rvUfbpq0q<3xh!pN6i^nM)3f22s&r*11PO~ew_Q1j)Az_bV~zMdGno*24-(Phb0 zdjr{XuFnJc`zK|gFn8--aZEARlcR!Uf#ze+FrN4eLh`#LTQEDk6yZYrOCf{xWfMBgi{+ z>sUgIPy5J)876AhS!CRM+AMB-R=R*AnCjfsKmELr@#}9kl$45Ydw;jbny$y(__m|5 zyZ@{BgVEpm%L-}I_N!p#0tp$HA^yZ@ZIcsc!}%L;HgYJ>09&*<+-Y8^YF_KpiBp!& zAW!LwAVW#V7Xj?}ijB^{>WQQQzqKG%Co%BkC;ZWX3oLZg>16aS`~S@qSLIpWq}6;o z&e8a+c4?{irWzbg1#YeF_$rhqe?ppBi7KYb_I`p$2s-Ssi>tUO^TKcXl$wD?s#1n`-W$9!t$!Yy5zwK2Y@DJ>A==!4!d3%# z>54*#I6LAdEw#a|k~3_EQ{DAIsmVg>jur zv+Hk6Sw;;2%MLnL1~CH~Cx(H6nuFdDU&X)e0jvAQl`E}c9;M%pEwrc$?7Wrv;B1}+qP$*7IS<@9JP!r2{jB+}a?Pap59 z%N0u#&N5)DST5;}rN{nQYVb2s5A1dI%pnp|KLIG2L9kT;!e_Z9nk`^ND-mH~!a~Dt z<1?S@-(mUcZIv@XpH_SXf`nC?wiePMImLkT=6Mf^yy+;rW#O!3VaHU|%&?5&XZEq~l46mt4kF>;cIY5UZ%@i`d^ErZ z>!jMIij;uECp5TfP!8Rv_%1xzP@3xeM}h0wwW!05&~_jk3-omZUHgnw6hBm9)2f0O z$3U_&K~r!Q=|Mn%Ygtbz2cqo=^CQA}oZl2HJ=BPZi1@U=Pfzjv$sTgHqs;k08>R&c zoQMM{=zhRkEfkXKGleJ1SEoM46#gs;j?2{HlNp+ODN&cL`i9V;vCZrIy61`R1Aj5I zI)PCh)1vbT$HH>X+){XnM_iKE8sH0=#=|oXbraUs$9o%h>lMxYyE0JUCCu9ln*=U= zeY4z18*>Pi7i84z^GVbSiPf=z`3&hsgstz%uZL2cp2RJd1NqS22iO4kth&O!^L3s( zy1&Ah0hHW#G6!Tf0Z7is%kN2{z#-}4lZVt}V_Faj^_H9R;3?RiB_(8RxOZrRDFBdOss-Dbn;xP_pvz$&;V? zXjQh&oaO>{oxIR~EenVXhm75+#5&k1`Figy6dUcYP)wuZn?JbMf^$@7*3P-z@XhV$ z1iYOC{i7Y6jB}IYl!2;BqKIMSenwxbcc9`R4z|>qf@CvedsHQ$rs3e<_`S+UL|%GR z6@6uPRN%_cAuZ6xwC+Jz9lOyvtU5MODbq{hfZ}y{YoO3089X zSQg|N*i*DN^-wD$Dkp5eLBl5PQS!#b1sXcjQE$IzJ=1z%WE#iJbD0OqEoqOe2g>f|TQoh^&)aW--E+n-iu)wG(%xap zza7cs(Ih0jXK|4u9g=Eq-WbXxnC10zHtcdqVWK?U{d=>*t1T4{WA`TH2QNuyyYh8* zb61c z_h@Ny`}$PinkYKv0V?JeI({2k&QU4^biROak z6W17%EGX~398;XtA8CeR5nV_K1^PbE)vCXX^m5jFl^34p6_*sgE6UY)IpBeg<`QM; zD-Ps^fuQ28vfPJ^nu2SCvh)fHx6ZTkjgdEnJlW*^H=!eF8m`tV5y289+Be zuAvT-XxeT#Hj;i}<N)$ddP>Z z5C+u8(D;qn%PVy`nG_cO=aqc^y+BtJ9ywNhKY}@&mNa{~Iq5M#R(PTR(hvnB(HB46Zc>>FGYW?w7Pc#0GAp4cvUgPm3C}gL%?l zxE?{y9KP}pwaou0pQQX*4Xd%g7J(C=>Ja=r1ZYsxJUi~^ot%4vJU!JgUg8hlHNxV1 z?hd;e=D9VcJw=2$&dQHmc%1&JY}{eku)}j|Wljqa+TV74(C1B9?IxD4r0OdrUNaP{ zYTQiiR2eI! zN=IxBeRN`Ox`TJU6O(Mpup}gmS7}>U3 z6w&B9Y@gOPYdz|Loy%!0qk>C3Y@}{yH&!c$r#*Q~S)5!R**P?Fp7=xDz3(dW=R$eu zC#E)Ny4CydYV?NBT>K+!_$DZX3(yFwfqFBOySkkaBOpK}tUj$-3)Cp}NuglWIH@SV z_$%ZdUSIKyc}QB9R>G3uP-2q=db-xXxUjs)sDCU=bUWY92$tvLYrpc7jmL){fO8O^QEV8uVi|Ac*gfuCG}By zH)&d6h4WE1L&nyoo}2}tpcKbnu{0`E+}xqjWda-q6xr%?kqVFS@W6(!_AadNg-ppx z<=Z$#Tma+l(tQ1j<9ft8=*zUnEc_$IJK-MTK?9kVnU@SbTNR5UFK;eKT!&u1uXV^V zjlKHac14b_-eYG+{^Isosq27FSU_>`qVQj%h%~Ueq?EVzv#y?fZ{lRk-IVcGUDprN3hba!b_*}${+RF?&2J&StbfO2b=MH=A36Mn zCSBYRO8OBtgnaO5gUbh{ST$a0ubFe82IegDr1}MYV*i7P z-I009i!}Y*79@f&4cw`w2AQ$dTZYyh^I@33vO6+tmeG?GT-3b0G%vlnTa9HDmrXU% zBvZCNqGINp*_+|=8&Mk0(;%~Jq4!u)E;{Xr8 zzFx}Eujdw2Nowja?E@H8JlnOMM!-?e3^UD@+QTp!gBNuMi_h=KrJ~#l$vlPU;qXo6 zBZpYyn5t09)F2&Yif%u|E1FJ0EvmxC?RrIdU#N=j9`ys@b^`*7iI#Q2(pi5s@2sN&bbt+V1LQIL@5I3pBM`?`GA^jYF<7 zy7#4VYzxHdgZe~_bbr1~*!u&1QD=SRS^75{qqDZ@vku$bB()uyz88>9fvQi%fu3>2 zC8yYa`XLJOR^5GY_!`#|oPKLlK%UpIQp zz2e}fxqFdTS%J$m+hx1xfw91KMcRv!URNJ+rGDUVE+ZtJ>0t&NZOh~XZFC)LD=fYh zSPmPTTjp&`Mf!iU=CoiM`918By+Y$K*%!QFHvD*RKkH@g$Y_UAb=)=77F+X%r=dxV zAYHa&p$E4}{Knz=Dqh#jZ)TT0u`3H~qRr<-d!J4Kh*->pE;>}^`jVe$E28!8pG!a~mWk#V@>)n0 z${yPuz7J2?Rs;DcYu$LB*Ey7Li@svoEdqH?&pQft<|cOu)1S|sDSh(dxA2cco>D9? zm##=#-Syx8`%jFq=*i56(wxH$8k2wL?>&IBxU1h%%ufU(SpaL8hRWfqRW{4XAkbAc zKtseM{l~vF{JAaxIK#txr|AFS*MQ5FJZR4E?>B$>a=){?8;=Oq)ZYB})%BME%Hmmf znys0Uk&(GfdY@8oD21q5_2;gxa0_WT_x$e<`_J7vgeg6F@^)>qu5-NFnH9Zu3?e*v za!Wb5miP3(NCg%XrP%c%-*0I^wBlvW&GeJfOcYdxBEaoCKbrzXlG&NpkHjuDd2Iy`b zXE{sl2R|icWI(>>e($QZiiea6b8BztB{>OgUV;c5UQ?Dg(AJCye=&kdUsfuBG!t zHKSbliV-K5u6MQhZ;c@TxzUg}!2whk*w{?8wd15*CP#tPH0eJCm?(=I5TY_GcZzVv zl-=ees`H+_QG?=tbjBWOYU1T7+T(bz$@}oN@vPSdq9MUiypS*2^0wh1NGsZT_nPro zGMvW>&=}WhC;eYYvdjNXl1cC>LK{m#4I=;rhNrQEN$3qwQ|id$8%fLJ@uTF|O|73$ zGHn)+BlS*9O)v5`0sdlA-2Z<-f&aciT~Vr)Bg8C4g>7&39)4*e{0!@VxV8av4wA~N z4!gPbZkO^fpIhQGhXciHlNFI;O}=D)uSo?N{huM!v?JxJ_&#Z)e=P+qDhBo&pDC$N zJ!r~{CSbpI3^jbT(XGBx2$ZJ^3sd8n*Oo;ZI6NT$Co1N6q4G6H)z3E$^f!=`ThzP%mmJrz_@rLtOX|LRZ5%EBdk zF7;@wGzkEW`pO`IFwZ4s#ZHOax9`gY^!qRUy?AD{%+uJ8Tjb;&4+&5<34E@t9gSq- zaiBiURC&v)eH75HbK00`fi@5XuUwO2(M3U%7HV@SG?T;>e@-WrK6U2gNwbdG`*88g`U#&V4(`LpuI*f25s| z0J9tchM?UtK^3C!;%EIeaae6Hb+~l-ALktKG8C>lrXQE9IZ78i;2djIPUx>Kd{AvBZ4 zMsie6D?T{J;j}(w{TGnt9v@6~BBjC)7`86}@iE-Z$GpG@K)i-KbQVv}n5)M8IU&J7bPou?YOM3T`4{`< ztpun%c6Gh3#YwKc(R2srtx^HutfaKGrBKSYSM^uXCoww;O2KS?rT@l=lhpv+%{?(Z z;pA8W902Y4yOP-*nwqCh-V;B|u_{;X?wx<_heLq&)*I8_n1Pe8?|-lO-?947oDcbb zGfTcdF8%pXeC^#rvGV`}!X%-caji$r+((>bo@ z_2xp)*vYy6_cckDjnP~VAjPFffRl*{I6%OY=Wrhg@su4L?G}LfNDG}#Loe~HE%rQN#O=~ztn9{IS&d29{*ERQMSP{@4%(>!^0QG)JmrgH zT5G2ks+%~rh2#t0JW%j{o0Fr2o)cD00T4d>>tx#>Amdr2jgo5+o#EK zYpd(-m~vnn-?cJ80vSWcx^<*Cw4oa4)U;}&rGln2@>yIQBOk6Z8|mr-Y&N0lNpgm( zB54PFxDEq&9jL6;I@JOGN({XDL5?xj!Z@_H>4~D{n}hw zePwGwzycx$Rr)&1u0^8?`$I4IXms091+}9|2vbKgq}LCYEdAZ66SU7*gT{V_MDlQcRK=P>H}JB(!nxMbTrta_d`RC+y9lxandItqObS+N|b6 zF~!3&5#wjG%4t$K28IC1$8N-}k;-KSy6ot>I1?ZeP5Q~qe4yD#+;keeMNb8^)~q94 zQ{a~%tYaczx~Rq6Zo+2uT!C1j=L7(k*xV%=V-ERiZ)pB$A&1-*2J+#-7g6}w0d~Kt zR2-mwHV7q~$?Po*CTNNjlXQOB$1A!aV##|M&;y`m(FxEH^Jz9T1xmZ@jKS_XTE`q0 zk`LC4GtM(VXdR4LN?%88R`5-pLyjT9(0*BH;UV4!cZ-(Ei!tx*l^%Sj9Uq3gsP&26 zpO*E#Lgr2(SlV&?YqFO7S%G^S3=CU+qp-Xm@Z>PPG$YYt)XNryJU|`#8vZnfTj0=P z@mWWU;-B{DhOXTIHZ0DqcWxEYwIv7_41GOhb$_{=n18SkJ&Zjpcg3v}mdFR-2K)rL z!ZVW52QQerw{}uCW(X7ll+MuoW%vU(R$4*JHlR$>`P>6%Xd0;Ikt2BkTKj|@^5H8m zvw{t*z7O8`qBd<0^;Ro$D-J@0ACzQ&zB#&P+N){SR;4_(?%J@I+K1c{0a&h?hV|kF zpk~Upj(rDm^ajXWr3MH-(Cki?u70L+dVh-k;l1tMikzhVVskW!sF-4<56Jj79Qa@ zyYTcxv4$C^G|9axT|`KN&fS*jOzBqk`W#A`=_3_=1O=^@Si{Du)sIlC6Xt+Jj#A<_ z-J8K3V-VL*E>F_;z5w+fmr!tbESC&|%%z4PA5&?dQQY1d7(zUpvKC#;NoX~aR6u>m zWp~d5@&ztHI)s4bGUF4m&gDbG+ow;fQ$~R6FHz8+EjSNrj>Y!gD>|D;{B(&?S&xE$ zB<<|c-lRxNj@pf|SxQyaHZ><^{u0;rA4Ko&Ftw~w;MI8{#X z;ab%2<#p#2Qf^~h2i^p`#vP>K_C9-bzg3||N^Cucy%u3W&K6bdN0&`TCb|vH_(^W%T^ukW* z#(-z<#TCq78=E(@d}@9WcIT>m6_++Xak>{~~v%{s0$x@ZCpI`?pJH>l~kuINP3S?sW%e7(jzfL4BW9CM~E$!EIu`AtTma%lW!t^B}l?&181kH&W zz;D)+8!rdd`wt}!Yb1}pB`N5~z}>YkvY++z6b`P9Fz*|#Aa*HlS-4+SVanz12!0PnRpnpt03&Y=Iv$w3t{Mepdci zAv!&b@92SFQ^mrWh>@)vlQ_&YJuq7`7raFt=ONKmne>@D* zExjend_G)MdMRmB^QEY;derH6a&=~%s~~^byZ-^HylE8j6M9UUG8V4xkgMX-zMz{lcATEQ|w z@~$hpp}CnSZt3y`VVUomRNWd+3Zd%&_rlB#?_wT@(H99qLL^7Xi^F@toLluaSgo&p zo2pml=z=mo-ur?vKOBoLs9lVvXflVSuP)Cdb^^Ccvf)x(jyAH|15aVRWj9+13CckI)AIr5J=dro^?kR{;4$6ZY**?b$NZ2$c4W68 zwNh8P&R&B8Wh%ZXQ7e1LrA8ZK>B}&ap7}dT4HuGfwBeODd6)gqIOR~oBp*LI2Z)78 zl|%q*aZ4yg4ISUzc;339wgFZy1X6%U=9^M7%%8_7J6Is{Naw9|-}jfH#>z`uuRA6J zQGwaO*NR`>j7w%*sRKQ2Z!}5HFWsD=-x318lM8dETkkV)j+ea+eq8o0PaG(cveQI6 zuN0IxB9a{ZfP+c){XE+H%CO6ObO=D;^`JuY-Mhm3;RMwG1qfwd=}ZZlG(2VR6+B`v z^K3X#uyh#n(7yXTTGnf_aZn)FL}D0N(IbX6=p6C;4U{K|7i-Jg}rL zK$3~kpcG|HG<_4Fxn0Az9+7Oq^;QNpcTV<~*8tKn!J);z@SU$bVOBs0mmBVQY`Fm8 z3F8>}4clg}>=A0GR=A*R{6LhrIYGb&l ztSi@X5kr>Ud}w)l_C(bRLnO~4^IOJbcc!V1Jp~m8oZOP8rfr;q>e2>H^0l37Jp?RG zmEe!TBxtpwoO`3lU$d&aRmSi-8Oz?gRFTuc=v;ch$Z8HpZqAndTr%(sW=w0K%<;*? ziqV6heR{4X;qb^rvx5hy?^GLoG|eHZ9buQW!LO}p%Llm?X`#B>2)VU}LskPls&kuM z%zi{Bas7K9ebt3P%Jw%R>_LQ^PX+FG5SXzDDw*CeG zGVE@R)9T`z#{B!am&!dmJ0wm&{kGtNecID~lgKev_QLDJzu-d`rBso$Me8u z*V$DFBN2#A`1v`Oi(n=@odLxANlbcAUqr*`=*QEJ7;ooI7CWVDeE|~i{fsIAQ{#d+`~TexrWBJ5`sv-mDn2Z(4AU} zpe}JK7?)&dWRfw?JMac|VBHQEAG*WSzPxB%@vAT`1s}mM7#}TEC!KM`o8md|i5{S> z{1>3M0O#K(q)%1c-L&kHQtDTqWYMD68G(FsLSe;HFuSnu9s2wubF)_W1qR#z`obkT zI_WAw-3~yywFeMlrN367K18V|%qC?9rf*Y`@ULnOc#=KYV0Ih^a{pAS6JiE!?k>C1pm z9|~jKW*U+*XW_8^yai+sgCZgE0AO_f&-DzCiB1jZ`52B3s8ID*KYU?c%pg$@vpdySy{kU09?o~L zEr`(>W`AJ4+frMj{F%_S(u8;!<|0#L*h9v|XCeNw{&H}lax#15VNGtiS=&r-Xd>r0 zE|y`YZ})Xo>Y&|3=#~7rm)_=B5mHiVaBq8z-8ZIx+GuESmHFXIXg+4!(p$^kiaMal z;JUipZl)$)_~A)u>ZIH!X16RS zKX!Uqfsg8p7^w8Z{%PllkE_}><%;7geZ9$y0%3fki`Lk<^-(;=wc$x$4Xbl&lv`*5 z{A0`6dx_p%_s5dm*AR!U7PzNxr^-t}SEY45?SvAe>^AjIwGlmC9Rzf$jhy@7degeL0#uNbDMsnR*dPj)bRR! z%E9imJ%(6pdQ#Qdjy0hZfnSk31KoZN!(7g~C%geGwzg01hw#UPV#XFP)u+ZCPXqQp zG((h6K()N{v)#rb<1~hj2^e?$y1+OP=vp^s47nF&9_7_CMlmh8{_NH*>!khn%vYcB z_Y>E~@Cy0vHFuyU%8rHVQ!&KR}64jkVgb^?Y+#4&h3othPA60&GWKSxyN#*Y!s$fq<={reJeEiY!~zK>9=FG z=bk@}v+3_AGTn*Q@0^?2gJM#!0!dMo>2^75Rn=t#aYxLI#lIT+!J(byV6aUpQkz0w#1u(oYp#J;8u!yZ54RdJAiA z4T>sFMNP~M=ac%3txW>a>jv)Q6OvgT)`iCUO4^mbkLV4(M!UV)u5ji7{FLY(n7EPZ zSHxwFK^NA8#A;F?6l$Y;jV3!+?V2HpH_c}P;lHmZV6tgIOeh_rB+IOKEPg<)!dpE(;^mw`Sr2Y7~6tiQd8bV4i9&IdT01i%1C{h73E6q z(EL7|j_RG}4eUHPskX)P^b#O2{dS7ipvx;$_}t$2R__d0T#Q zKvv_(SJ^CB4QgrLCo7vY9QA-&UzX89`yOt@j=EeR%-Id%HFImNtF-fjXl9Znawv`Z z*1-=xq9R8YOJe6V5w>|}I!;F9TsaF;8X^%TEIH|$;??}g8oh15b8~drD8|dw)HPyi zzoCy^p2qf>-Uj*1a%tCNRn#44?)*wN+HaEz=CjK+Ll+gJpYBRK7h*~aoG$gB>xyNw zMl&V*e!MHd#oRFfi-KPi4ad(h|z6>|bp-^+^4T$61 z49mkOjBky{Kk>{ezBm~^I3+4195)CM5A!u`$-$?iExn7Kk7Pw}Uzc@4MUEzI1ny?G z{Hu?33`aX#-0^wY)W4(PNURJ|dhDK%>n|1lLnm<gBy38S#_&43~Xwje4>8!ML^qwnFK8d$1hqRtCf8)VIdu*X=)3OdEFvoqO3AL zA$~HskM)WxzqC6EAUIm<_64?qKz%8$JfMK^2KnFeOU!UwvOT+SPuTGRNBp_^UCl-X zaaZ9Q@aSVjdoPmWH6r5tv&3mOsqr=!GWI1Zh z-@)iA9WY886G}J(+j-Q@kHav-qnLSZ#ceWMHBrGp|7cZQoZ<&lol++!KOEj3{W)Az zNl9Fl=~aI~mJ=Belws{e@O?3xtr$9dEM=>9X3bhORw(sf{*@Xv3&V=*eb>jSKn7~o zDvCK6Hp{*$NDRa@r-sXBDdN@@Hii{?f*qG;9cY^_B3`Yz-PD7hdZnnQH+(Hi3;D6! z8$^$`ng#(KlGLueY}2P{%seqx0jr`yM67l*y+Ky$Z5GL{oHM z{&t&0{gn<{RaK%76etxi*ecYj)rESNYX<&66hr~zZhS~^Z-ui{oODD=uW%e8cXYj0 ze>zP13Ay|ij~n{tscYdEK7-|!w93jHNyB8_d2)Ez1-UM#^(+N`eaHG>VYVAgH5 z!UoZIk5m~`M7~y?U-q%uVCJ&)A*QV7L}ONl@aa_LJqZ^rk%c>-UxT-G3snc2%wAkX zwC%N#BM~!qO`0^?to*gEb}*py+VV$7{O>(AjNStripK3HhKfsabHOU-w#(ZeE72Vr~{(ex}47FGX;SQv&7a{JmALSBJYpnr@$xr#J7 z=E+nAk-Qv;Ho``CO4oPe(H+$;u$zWd>rtH#7}L7K7uApUaNl3ev0a;psUd7 zO4Cy~p4=q33GPmfL1AHG+fDDqysWIHC5zWT-4N>a*vQ#ATnnA#X=`h1I;R&Wx>XdY zoVOJ@i8MBynR1Gv1t0mTlabv4*o6y!==pyx0*$j?`(n4sN+&1r3G$C)do^mdOq(Qe#tN`zKv`&Ew4{u9I2>$2} zgM&0&4wxnw^X;df^k^RL7}dxA!(DJ>=s$BY&r9qT#UE+9Y5W*Cae0SX2oQ=X1q^_D zd+J@^skZvf0umBRN=k)bE)?$GOW`-Ws<3n8P;g{5Fh3?HCULQ`jt^yYxLVq^UH+cE ze~TK?hZ4~Q^-CV?ONcGM@Q$?#<^$&%%W`~<4UtTXpkBW@t5fC}C=|%6)L>@I z=SsZQi)T^mpvH!6E#u#-@7HExc$z2CvZc!g2PAV=mic_J9~+{|L94(OKrbZm{ry{` zE%IxF+Nl0(1qPfK&4dM_{?a`*y;NtIggqOmwwq<~GpBPugv@b2Qb+GA_FP|G*1q~u z@IPaEVYTa4H-2B9e}P;N#a;@F<#HfJMMWO3-det|aQIoV$xd*)?9oq)vPXTgEE6=} z7i_i&+WL(x3tx)e(*`K6UU85(>q=*bISu zt9L<;3-Ey|eB?*^C!C^C)rJl0dpWR?x{ZN zJwG|pLv`L!b}9TvU8y$x#>cm|y+kCCRwAu`m*ldxp4{U4AsJUi3jdZySR-g%AN+t} z(NXfj8l9J)uf!q!-V6N?i%?Wt?8*K%$ECeE->SKM%S~5}AWt-C0ccIdPh7Twt*nO% z{!xD8qcfnvkWDI{edK0TmE$v2hsvWq&nC83aC%vGYb&-Xo_RmvQv-r=s`e9#E$GgS zhg?x8Kl+EOfO=WP;f5&zh+9?oY=4ALG+4b*2#q#ZCaUJuMhTEQZ^i#luY|Xt$A`lD zGLOD-MG+4=rg8Gqr;81dva0*`rM(=mIthhl1Es!sCB3TnX~PY11=mQB_a;+=pQs@( zp;xwN>;bYy(?BckZ{9`4Dvr&&?$B_fA{EY-{Jwifu0-e0uiyi=FifG&itaF9= z%lEv02nwS?fOUt_()SB&v}wQ;{>kn3b}8^@lkdjelkz7`uJi6m|No7j#0dYFxfH&}wm)Bpeg literal 0 HcmV?d00001 diff --git a/src/Sync.php b/src/Sync.php index 52505e1..c682aa2 100644 --- a/src/Sync.php +++ b/src/Sync.php @@ -13,12 +13,8 @@ use Craft; use craft\base\Plugin; -use craft\web\UrlManager; use craft\services\Utilities; -use craft\services\Plugins; -use craft\events\PluginEvent; use craft\events\RegisterComponentTypesEvent; -use craft\events\RegisterUrlRulesEvent; use craft\events\RegisterUserPermissionsEvent; use craft\services\UserPermissions; @@ -27,6 +23,7 @@ use weareferal\sync\utilities\SyncUtility; use weareferal\sync\models\Settings; use weareferal\sync\services\SyncService; +use weareferal\sync\assets\SyncSettingAsset; class Sync extends Plugin @@ -82,7 +79,10 @@ protected function createSettingsModel(): Settings protected function settingsHtml(): string { - return Craft::$app->getView()->renderTemplate( + $view = Craft::$app->getView(); + $view->registerAssetBundle(SyncSettingAsset::class); + $view->registerJs("new Craft.SyncSettings('main-form');"); + return $view->renderTemplate( 'env-sync/settings', [ 'settings' => $this->getSettings() diff --git a/src/assets/SyncSettingAsset.php b/src/assets/SyncSettingAsset.php new file mode 100644 index 0000000..5fbebab --- /dev/null +++ b/src/assets/SyncSettingAsset.php @@ -0,0 +1,21 @@ +sourcePath = __DIR__ . '/dist'; + $this->depends = [ + CpAsset::class, + ]; + $this->js = [ + 'SyncSetting.js' + ]; + parent::init(); + } +} \ No newline at end of file diff --git a/src/assets/SyncAsset.php b/src/assets/SyncUtilityAsset.php similarity index 90% rename from src/assets/SyncAsset.php rename to src/assets/SyncUtilityAsset.php index e37bef1..7d5edba 100644 --- a/src/assets/SyncAsset.php +++ b/src/assets/SyncUtilityAsset.php @@ -5,7 +5,7 @@ use craft\web\assets\cp\CpAsset; -class SyncAsset extends AssetBundle +class SyncUtilityAsset extends AssetBundle { public function init() { diff --git a/src/assets/dist/SyncSetting.js b/src/assets/dist/SyncSetting.js new file mode 100644 index 0000000..c7a2507 --- /dev/null +++ b/src/assets/dist/SyncSetting.js @@ -0,0 +1,21 @@ +(function($) { + Craft.SyncSettings = Garnish.Base.extend( + { + init: function(formId) { + this.$form = $('#' + formId); + this.$pruneLightswitch = $("#settings-prune", this.form); + + this.addListener(this.$pruneLightswitch, 'change', 'updatePruneSettings'); + }, + + updatePruneSettings: function(ev) { + var $lightswitch = this.$pruneLightswitch.data('lightswitch'); + var $settings = $("#settings-env-sync-prune-settings", this.form); + if ($lightswitch.on) { + $settings.show(); + } else { + $settings.hide(); + } + } + }); +})(jQuery); \ No newline at end of file diff --git a/src/console/controllers/DatabaseController.php b/src/console/controllers/DatabaseController.php index a9a3908..65714af 100644 --- a/src/console/controllers/DatabaseController.php +++ b/src/console/controllers/DatabaseController.php @@ -1,4 +1,5 @@ sync->createDatabaseBackup(); + $path = Sync::getInstance()->sync->createDatabaseBackup(); + $this->stdout("Created local database backup: " . $path . PHP_EOL, Console::FG_GREEN); } catch (\Exception $e) { Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); return ExitCode::UNSPECIFIED_ERROR; } - $this->stdout("Created local database backup" . PHP_EOL, Console::FG_GREEN); return ExitCode::OK; } @@ -50,13 +51,16 @@ public function actionCreateBackup() public function actionPush() { try { - Sync::getInstance()->sync->pushDatabase(); + $paths = Sync::getInstance()->sync->pushDatabaseBackups(); + $this->stdout("Pushed " . count($paths) . " database backup(s) to the cloud" . PHP_EOL, Console::FG_GREEN); + foreach ($paths as $path) { + $this->stdout($path . PHP_EOL, Console::FG_GREEN); + } } catch (\Exception $e) { Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); return ExitCode::UNSPECIFIED_ERROR; } - $this->stdout("Pushed database backups to the cloud" . PHP_EOL, Console::FG_GREEN); return ExitCode::OK; } @@ -66,13 +70,44 @@ public function actionPush() public function actionPull() { try { - Sync::getInstance()->sync->pullDatabase(); + $paths = Sync::getInstance()->sync->pullDatabaseBackups(); + $this->stdout("Pulled " . count($paths) . " database backup(s) to the cloud" . PHP_EOL, Console::FG_GREEN); + foreach ($paths as $path) { + $this->stdout($path . PHP_EOL, Console::FG_GREEN); + } } catch (\Exception $e) { Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); return ExitCode::UNSPECIFIED_ERROR; } - $this->stdout("Pulled database backups from the cloud" . PHP_EOL, Console::FG_GREEN); return ExitCode::OK; - } + } + + /** + * Prune database backups + */ + public function actionPrune() + { + if (! Sync::getInstance()->getSettings()->prune) { + $this->stderr("Backup pruning disabled. Please enable via the Env Sync control panel settings" . PHP_EOL, Console::FG_YELLOW); + return ExitCode::CONFIG; + } else { + try { + $paths = Sync::getInstance()->sync->pruneDatabaseBackups(); + $this->stdout("Pruned " . count($paths["local"]) . " local database backup(s)" . PHP_EOL, Console::FG_GREEN); + foreach ($paths["local"] as $path) { + $this->stdout($path . PHP_EOL); + } + $this->stdout("Pruned " . count($paths["remote"]) . " remote database backup(s)" . PHP_EOL, Console::FG_GREEN); + foreach ($paths["remote"] as $path) { + $this->stdout($path . PHP_EOL); + } + } catch (\Exception $e) { + Craft::$app->getErrorHandler()->logException($e); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + return ExitCode::UNSPECIFIED_ERROR; + } + return ExitCode::OK; + } + } } diff --git a/src/console/controllers/VolumeController.php b/src/console/controllers/VolumeController.php new file mode 100644 index 0000000..316da5f --- /dev/null +++ b/src/console/controllers/VolumeController.php @@ -0,0 +1,114 @@ +sync->createVolumeBackup(); + $this->stdout("Created local volume backup: " . $path . PHP_EOL, Console::FG_GREEN); + } catch (\Exception $e) { + Craft::$app->getErrorHandler()->logException($e); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + return ExitCode::UNSPECIFIED_ERROR; + } + return ExitCode::OK; + } + + /** + * Push local volume backups to cloud + */ + public function actionPush() + { + try { + $paths = Sync::getInstance()->sync->pushVolumeBackups(); + $this->stdout("Pushed " . count($paths) . " volume backup(s) to the cloud" . PHP_EOL, Console::FG_GREEN); + foreach ($paths as $path) { + $this->stdout($path . PHP_EOL, Console::FG_GREEN); + } + } catch (\Exception $e) { + Craft::$app->getErrorHandler()->logException($e); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + return ExitCode::UNSPECIFIED_ERROR; + } + return ExitCode::OK; + } + + /** + * Pull remote volume backups from cloud + */ + public function actionPull() + { + try { + $paths = Sync::getInstance()->sync->pullVolumeBackups(); + $this->stdout("Pulled " . count($paths) . " volume backup(s) to the cloud" . PHP_EOL, Console::FG_GREEN); + foreach ($paths as $path) { + $this->stdout($path . PHP_EOL, Console::FG_GREEN); + } + } catch (\Exception $e) { + Craft::$app->getErrorHandler()->logException($e); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + return ExitCode::UNSPECIFIED_ERROR; + } + return ExitCode::OK; + } + + /** + * Prune volume backups + */ + public function actionPrune() + { + if (! Sync::getInstance()->getSettings()->prune) { + $this->stderr("Backup pruning disabled. Please enable via the Env Sync control panel settings" . PHP_EOL, Console::FG_YELLOW); + return ExitCode::CONFIG; + } else { + try { + $paths = Sync::getInstance()->sync->pruneVolumeBackups(); + $this->stdout("Pruned " . count($paths["local"]) . " local volume backup(s)" . PHP_EOL, Console::FG_GREEN); + foreach ($paths["local"] as $path) { + $this->stdout($path . PHP_EOL); + } + $this->stdout("Pruned " . count($paths["remote"]) . " remote volume backup(s)" . PHP_EOL, Console::FG_GREEN); + foreach ($paths["remote"] as $path) { + $this->stdout($path . PHP_EOL); + } + } catch (\Exception $e) { + Craft::$app->getErrorHandler()->logException($e); + $this->stderr('Error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); + return ExitCode::UNSPECIFIED_ERROR; + } + return ExitCode::OK; + } + + } +} diff --git a/src/console/controllers/VolumesController.php b/src/console/controllers/VolumesController.php deleted file mode 100644 index 4b8b9dd..0000000 --- a/src/console/controllers/VolumesController.php +++ /dev/null @@ -1,78 +0,0 @@ -sync->createVolumesBackup(); - } catch (\Exception $e) { - Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); - return ExitCode::UNSPECIFIED_ERROR; - } - $this->stdout("Created local volumes backup" . PHP_EOL, Console::FG_GREEN); - return ExitCode::OK; - } - - /** - * Push local volume backups to cloud - */ - public function actionPush() - { - try { - Sync::getInstance()->sync->pushVolumes(); - } catch (\Exception $e) { - Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); - return ExitCode::UNSPECIFIED_ERROR; - } - $this->stdout("Pushed volumes backups to the cloud" . PHP_EOL, Console::FG_GREEN); - return ExitCode::OK; - } - - /** - * Pull remote volume backups from cloud - */ - public function actionPull() - { - try { - Sync::getInstance()->sync->pushVolumes(); - } catch (\Exception $e) { - Craft::$app->getErrorHandler()->logException($e); - $this->stderr('error: ' . $e->getMessage() . PHP_EOL, Console::FG_RED); - return ExitCode::UNSPECIFIED_ERROR; - } - $this->stdout("Pulled volumes backups from the cloud" . PHP_EOL, Console::FG_GREEN); - return ExitCode::OK; - } -} diff --git a/src/controllers/SyncController.php b/src/controllers/SyncController.php index d4332f8..893ed66 100644 --- a/src/controllers/SyncController.php +++ b/src/controllers/SyncController.php @@ -6,52 +6,82 @@ use craft\web\Controller; use weareferal\sync\Sync; -use weareferal\sync\queue\PullDatabaseJob; -use weareferal\sync\queue\PullVolumesJob; -use weareferal\sync\queue\PushDatabaseJob; -use weareferal\sync\queue\PushVolumesJob; +use weareferal\sync\queue\CreateDatabaseBackupJob; +use weareferal\sync\queue\CreateVolumeBackupJob; +use weareferal\sync\queue\PruneDatabaseBackupsJob; +use weareferal\sync\queue\PruneVolumeBackupsJob; +use weareferal\sync\queue\PullDatabaseBackupsJob; +use weareferal\sync\queue\PullVolumeBackupsJob; +use weareferal\sync\queue\PushDatabaseBackupsJob; +use weareferal\sync\queue\PushVolumeBackupsJob; use weareferal\sync\exceptions\ProviderException; class SyncController extends Controller { - public function actionCreateDatabaseBackup () + public function actionCreateDatabaseBackup() { $this->requirePostRequest(); $this->requireCpRequest(); $this->requirePermission('sync'); try { - Sync::getInstance()->sync->createDatabaseBackup(); + $prune = Sync::getInstance()->getSettings()->prune; + $useQueue = Sync::getInstance()->getSettings()->useQueue; + if ($prune) { + if ($useQueue) { + Craft::$app->queue->push(new PruneDatabaseBackupsJob()); + } else { + Sync::getInstance()->sync->pruneDatabaseBackups(); + } + } + if ($useQueue) { + Craft::$app->queue->push(new CreateDatabaseBackupJob()); + } else { + Sync::getInstance()->sync->createDatabaseBackup(); + } } catch (\Exception $e) { Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error creating database backup')); } - + return $this->asJson([ "success" => true ]); } - public function actionCreateVolumesBackup () + public function actionCreateVolumesBackup() { $this->requirePostRequest(); $this->requireCpRequest(); $this->requirePermission('sync'); try { - Sync::getInstance()->sync->createVolumesBackup(); + $prune = Sync::getInstance()->getSettings()->prune; + $useQueue = Sync::getInstance()->getSettings()->useQueue; + if ($prune) { + if ($useQueue) { + Craft::$app->queue->push(new PruneVolumeBackupsJob()); + } else { + Sync::getInstance()->sync->pruneVolumeBackups(); + } + } + if ($useQueue) { + Craft::$app->queue->push(new CreateVolumeBackupJob()); + } else { + Sync::getInstance()->sync->createVolumeBackup(); + } } catch (\Exception $e) { Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error creating volume backup')); } - + return $this->asJson([ "success" => true ]); } - public function actionPushDatabase () + public function actionPushDatabase() { $this->requirePostRequest(); $this->requireCpRequest(); @@ -59,9 +89,9 @@ public function actionPushDatabase () try { if (Sync::getInstance()->getSettings()->useQueue) { - Craft::$app->queue->push(new PushDatabaseJob()); + Craft::$app->queue->push(new PushDatabaseBackupsJob()); } else { - Sync::getInstance()->sync->pushDatabase(); + Sync::getInstance()->sync->pushDatabaseBackups(); } } catch (ProviderException $e) { return $this->asErrorJson(Craft::t('env-sync', $e->getMessage())); @@ -75,7 +105,7 @@ public function actionPushDatabase () ]); } - public function actionPullDatabase () + public function actionPullDatabase() { $this->requirePostRequest(); $this->requireCpRequest(); @@ -83,9 +113,9 @@ public function actionPullDatabase () try { if (Sync::getInstance()->getSettings()->useQueue) { - Craft::$app->queue->push(new PullDatabaseJob()); + Craft::$app->queue->push(new PullDatabaseBackupsJob()); } else { - Sync::getInstance()->sync->pullDatabase(); + Sync::getInstance()->sync->pullDatabaseBackups(); } } catch (ProviderException $e) { return $this->asErrorJson(Craft::t('env-sync', $e->getMessage())); @@ -99,7 +129,7 @@ public function actionPullDatabase () ]); } - public function actionPushVolumes () + public function actionPushVolumes() { $this->requirePostRequest(); $this->requireCpRequest(); @@ -107,9 +137,9 @@ public function actionPushVolumes () try { if (Sync::getInstance()->getSettings()->useQueue) { - Craft::$app->queue->push(new PushVolumesJob()); + Craft::$app->queue->push(new PushVolumeBackupsJob()); } else { - Sync::getInstance()->sync->pushVolumes(); + Sync::getInstance()->sync->pushVolumeBackups(); } } catch (ProviderException $e) { return $this->asErrorJson(Craft::t('env-sync', $e->getMessage())); @@ -117,13 +147,13 @@ public function actionPushVolumes () Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error pushing volume')); } - + return $this->asJson([ "success" => true ]); } - public function actionPullVolumes () + public function actionPullVolumes() { $this->requirePostRequest(); $this->requireCpRequest(); @@ -131,9 +161,9 @@ public function actionPullVolumes () try { if (Sync::getInstance()->getSettings()->useQueue) { - Craft::$app->queue->push(new PullVolumesJob()); + Craft::$app->queue->push(new PullVolumeBackupsJob()); } else { - Sync::getInstance()->sync->pullVolumes(); + Sync::getInstance()->sync->pullVolumeBackups(); } } catch (ProviderException $e) { return $this->asErrorJson(Craft::t('env-sync', $e->getMessage())); @@ -141,13 +171,13 @@ public function actionPullVolumes () Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error pulling volume')); } - + return $this->asJson([ "success" => true ]); } - public function actionRestoreDatabase () + public function actionRestoreDatabase() { try { $databaseName = Craft::$app->getRequest()->getRequiredBodyParam('database-name'); @@ -156,13 +186,13 @@ public function actionRestoreDatabase () Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error restoring database')); } - + return $this->asJson([ "success" => true ]); } - public function actionRestoreVolumes () + public function actionRestoreVolumes() { $this->requirePostRequest(); $this->requireCpRequest(); @@ -175,9 +205,9 @@ public function actionRestoreVolumes () Craft::$app->getErrorHandler()->logException($e); return $this->asErrorJson(Craft::t('env-sync', 'Error restoring assets')); } - + return $this->asJson([ "success" => true ]); } -} \ No newline at end of file +} diff --git a/src/exceptions/ProviderException.php b/src/exceptions/ProviderException.php index 92ea1c5..64a1e91 100644 --- a/src/exceptions/ProviderException.php +++ b/src/exceptions/ProviderException.php @@ -1,7 +1,7 @@ open($dest, ZIPARCHIVE::CREATE)) { - return false; - } - - $source = str_replace('\\', '/', realpath($source)); - - if (is_dir($source) === true) - { - $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); - - foreach ($files as $file) - { - $file = str_replace('\\', '/', $file); - + $zip->open($dstPath, ZIPARCHIVE::CREATE); + $srcPath = str_replace('\\', DIRECTORY_SEPARATOR, realpath($srcPath)); + + if (is_dir($srcPath)) { + $paths = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($srcPath), RecursiveIteratorIterator::SELF_FIRST); + foreach ($paths as $path) { + $path = str_replace('\\', DIRECTORY_SEPARATOR, $path); // Ignore "." and ".." folders - if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) + if (in_array(substr($path, strrpos($path, DIRECTORY_SEPARATOR) + 1), array('.', '..'))) { continue; - - $file = realpath($file); - - if (is_dir($file) === true) - { - $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); } - else if (is_file($file) === true) - { - $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); + $path = realpath($path); + if (is_dir($path)) { + $relPath = str_replace($srcPath . DIRECTORY_SEPARATOR, '', $path . DIRECTORY_SEPARATOR); + $zip->addEmptyDir($relPath); + } else if (is_file($path)) { + $relPath = str_replace($srcPath . DIRECTORY_SEPARATOR, '', $path); + $zip->addFile($path, $relPath); } } + } else if (is_file($srcPath)) { + $zip->addFromString(basename($srcPath), file_get_contents($srcPath)); } - else if (is_file($source) === true) - { - $zip->addFromString(basename($source), file_get_contents($source)); - } - + return $zip->close(); } - public static function unzip($source, $dest) + public static function unzip($srcPath, $dstPath) { - if (! extension_loaded('zip')) { - Craft::error('sync: Couldn\'t load zip extension', __METHOD__); - return false; - } - - if (! file_exists($source)) { - Craft::error('sync: Source zip file doesn\'t exist: ' . $source, __METHOD__); - return false; - } - $zip = new ZipArchive(); - if (! $zip->open($source)) { - Craft::error('sync: Couldn\'t open zip file: ' . $source, __METHOD__); - return false; - } - - $zip->extractTo($dest); + $zip->open($srcPath); + $zip->extractTo($dstPath); return $zip->close(); } -} \ No newline at end of file +} diff --git a/src/models/Settings.php b/src/models/Settings.php index e700ce3..8d9b5b3 100644 --- a/src/models/Settings.php +++ b/src/models/Settings.php @@ -12,8 +12,15 @@ class Settings extends Model public $s3RegionName; public $s3BucketName; public $s3BucketPrefix; + public $useQueue = false; + public $prune = false; + public $pruneDailyCount = 14; + public $pruneWeeklyCount = 4; + public $pruneMonthlyCount = 6; + public $pruneYearlyCount = 3; + public function rules(): array { return [ @@ -25,10 +32,20 @@ public function rules(): array ['cloudProvider', 's3AccessKey', 's3SecretKey', 's3BucketName', 's3RegionName', 's3BucketPrefix'], 'string' ], - [['useQueue'], 'boolean'], + [ + ['useQueue', 'prune'], + 'boolean' + ], + [ + ['pruneDailyCount', 'pruneWeeklyCount', 'pruneMonthlyCount', 'pruneYearlyCount'], + 'number' + ] ]; } + /** + * + */ public function isConfigured(): bool { $vars = [ @@ -46,5 +63,3 @@ public function isConfigured(): bool return true; } } - -?> \ No newline at end of file diff --git a/src/queue/CreateDatabaseBackupJob.php b/src/queue/CreateDatabaseBackupJob.php new file mode 100644 index 0000000..7221cd6 --- /dev/null +++ b/src/queue/CreateDatabaseBackupJob.php @@ -0,0 +1,20 @@ +sync->createDatabaseBackup(); + } + + protected function defaultDescription() + { + return 'Create a new database backup'; + } +} diff --git a/src/queue/CreateVolumeBackupJob.php b/src/queue/CreateVolumeBackupJob.php new file mode 100644 index 0000000..22c3fe6 --- /dev/null +++ b/src/queue/CreateVolumeBackupJob.php @@ -0,0 +1,20 @@ +sync->createVolumeBackup(); + } + + protected function defaultDescription() + { + return 'Create a new volume backup'; + } +} diff --git a/src/queue/PruneDatabaseBackupsJob.php b/src/queue/PruneDatabaseBackupsJob.php new file mode 100644 index 0000000..3dfc28d --- /dev/null +++ b/src/queue/PruneDatabaseBackupsJob.php @@ -0,0 +1,20 @@ +sync->pruneDatabaseBackups(); + } + + protected function defaultDescription() + { + return 'Prune local and remote database backups'; + } +} diff --git a/src/queue/PruneVolumeBackupsJob.php b/src/queue/PruneVolumeBackupsJob.php new file mode 100644 index 0000000..a424b13 --- /dev/null +++ b/src/queue/PruneVolumeBackupsJob.php @@ -0,0 +1,20 @@ +sync->pruneVolumeBackups(); + } + + protected function defaultDescription() + { + return 'Prune local and remote volume backups'; + } +} diff --git a/src/queue/PullDatabaseJob.php b/src/queue/PullDatabaseBackupsJob.php similarity index 70% rename from src/queue/PullDatabaseJob.php rename to src/queue/PullDatabaseBackupsJob.php index 5e51e11..2a4e016 100644 --- a/src/queue/PullDatabaseJob.php +++ b/src/queue/PullDatabaseBackupsJob.php @@ -1,19 +1,20 @@ sync->pullDatabase(); + Sync::getInstance()->sync->pullDatabaseBackups(); } protected function defaultDescription() { return 'Pull remote database backups from cloud'; } -} \ No newline at end of file +} diff --git a/src/queue/PullVolumesJob.php b/src/queue/PullVolumeBackupsJob.php similarity index 71% rename from src/queue/PullVolumesJob.php rename to src/queue/PullVolumeBackupsJob.php index 41c645b..289f9bc 100644 --- a/src/queue/PullVolumesJob.php +++ b/src/queue/PullVolumeBackupsJob.php @@ -1,19 +1,20 @@ sync->pullVolumes(); + Sync::getInstance()->sync->pullVolumeBackups(); } protected function defaultDescription() { return 'Pull remote volume backups from cloud'; } -} \ No newline at end of file +} diff --git a/src/queue/PushDatabaseJob.php b/src/queue/PushDatabaseBackupsJob.php similarity index 70% rename from src/queue/PushDatabaseJob.php rename to src/queue/PushDatabaseBackupsJob.php index 78f3224..31dc135 100644 --- a/src/queue/PushDatabaseJob.php +++ b/src/queue/PushDatabaseBackupsJob.php @@ -1,19 +1,20 @@ sync->pushDatabase(); + Sync::getInstance()->sync->pushDatabaseBackups(); } protected function defaultDescription() { return 'Push local database backups to cloud'; } -} \ No newline at end of file +} diff --git a/src/queue/PushVolumesJob.php b/src/queue/PushVolumeBackupsJob.php similarity index 71% rename from src/queue/PushVolumesJob.php rename to src/queue/PushVolumeBackupsJob.php index 34b9a8d..d7afbea 100644 --- a/src/queue/PushVolumesJob.php +++ b/src/queue/PushVolumeBackupsJob.php @@ -1,19 +1,20 @@ sync->pullVolumes(); + Sync::getInstance()->sync->pushVolumeBackups(); } protected function defaultDescription() { return 'Push local volume backups to cloud'; } -} \ No newline at end of file +} diff --git a/src/services/SyncService.php b/src/services/SyncService.php index 072dac9..32cfac3 100644 --- a/src/services/SyncService.php +++ b/src/services/SyncService.php @@ -1,4 +1,5 @@ format('Y-m-d H:i:s'); + if ($env) { + $label = $label . ' (' . $env . ')'; + } + + $this->filename = $_filename; + $this->datetime = $datetime; + $this->label = $label; + $this->env = $env; + } + + public function path() + { + $path = Craft::$app->getPath()->getDbBackupPath(); + return $path . DIRECTORY_SEPARATOR . $this->filename; + } } class SyncService extends Component @@ -28,56 +78,59 @@ class SyncService extends Component * piggy-back on the existing backup methods from * * https://github.com/craftcms/cms/blob/master/src/db/Connection.php + * + * @return string The path to the newly created backup */ - public function createDatabaseBackup() { - $backupPath = $this->getBackupPath('sql'); + public function createDatabaseBackup() + { + $backupPath = $this->createBackupPath('sql'); Craft::$app->getDb()->backupTo($backupPath); + return $backupPath; } /** * Create a zipped archive of all volumes to our backup folder * + * @return string The path to the newly created backup */ - public function createVolumesBackup() + public function createVolumeBackup(): string { - $backupPath = $this->getBackupPath('zip'); + $backupPath = $this->createBackupPath('zip'); $volumes = Craft::$app->getVolumes()->getAllVolumes(); $tmpDirName = Craft::$app->getPath()->getTempPath() . DIRECTORY_SEPARATOR . strtolower(StringHelper::randomString(10)); - foreach ($volumes as $i=>$volume) { + foreach ($volumes as $i => $volume) { $tmpPath = $tmpDirName . DIRECTORY_SEPARATOR . $volume->handle; - if (file_exists($volume->rootPath)) { - FileHelper::copyDirectory($volume->rootPath, $tmpPath); - } else { - Craft::info("Volume path doesn't exist: " . $volume->rootPath, "env-sync"); - } + FileHelper::copyDirectory($volume->rootPath, $tmpPath); } - $zip = ZipHelper::recursiveZip($tmpDirName, $backupPath); - + ZipHelper::recursiveZip($tmpDirName, $backupPath); FileHelper::clearDirectory(Craft::$app->getPath()->getTempPath()); + + return $backupPath; } /** * Restore a particular volume backup * - * @param string $filename The filename (not absolute path) of the + * @param string $filename: The filename (not absolute path) of the * zipped volumes archive to restore + * @return string The path for the restored backup file */ public function restoreVolumesBackup($filename) { - $volumes = Craft::$app->getVolumes()->getAllVolumes(); $backupPath = Craft::$app->getPath()->getDbBackupPath() . DIRECTORY_SEPARATOR . pathinfo($filename, PATHINFO_FILENAME) . '.zip'; - $tmpDir = Craft::$app->getPath()->getTempPath() . DIRECTORY_SEPARATOR . strtolower(StringHelper::randomString(10)); + $volumes = Craft::$app->getVolumes()->getAllVolumes(); + $tmpDirName = Craft::$app->getPath()->getTempPath() . DIRECTORY_SEPARATOR . strtolower(StringHelper::randomString(10)); - ZipHelper::unzip($backupPath, $tmpDir); + ZipHelper::unzip($backupPath, $tmpDirName); - $folders = array_diff(scandir($tmpDir), array('.', '..')); + $folders = array_diff(scandir($tmpDirName), array('.', '..')); foreach ($folders as $folder) { foreach ($volumes as $volume) { if ($folder == $volume->handle) { - $dest = $tmpDir . DIRECTORY_SEPARATOR . $folder; - if (! file_exists($volume->rootPath)) { + $dest = $tmpDirName . DIRECTORY_SEPARATOR . $folder; + if (!file_exists($volume->rootPath)) { FileHelper::createDirectory($volume->rootPath); } else { FileHelper::clearDirectory($volume->rootPath); @@ -88,6 +141,8 @@ public function restoreVolumesBackup($filename) } FileHelper::clearDirectory(Craft::$app->getPath()->getTempPath()); + + return $backupPath; } /** @@ -95,46 +150,69 @@ public function restoreVolumesBackup($filename) * * @param string $filename The filename (not absolute path) of the * zipped volumes archive to restore + * @return string The path for the restored backup file */ - public function restoreDatabaseBackup($filename) + public function restoreDatabaseBackup($filename): string { $path = Craft::$app->getPath()->getDbBackupPath() . DIRECTORY_SEPARATOR . pathinfo($filename, PATHINFO_FILENAME) . '.sql'; Craft::$app->getDb()->restore($path); + return $path; + } + + /** + * Prune old database backups + * + * @param bool $dryRun Skip the actual deletion of files + * @return array An array containing the deleted local and remote path + */ + public function pruneDatabaseBackups($dryRun = false) + { + return $this->prune("sql", $dryRun); + } + + /** + * Prune old volume backups + * + * @param bool $dryRun Skip the actual deletion of files + * @return array An array containing the deleted local and remote path + */ + public function pruneVolumeBackups($dryRun = false) + { + return $this->prune("zip", $dryRun); } /** * Return available database backups * - * @return string[] A list of filename ready for an HTML select + * @return array A list of filename ready for an HTML select */ public function getDbBackupOptions(): array { - $path = Craft::$app->getPath()->getDbBackupPath(); - $filenames = preg_grep('~\.sql$~', scandir($path)); - return $this->encodeSelectOptions($filenames); + $filenames = $this->getBackupFilenames("sql"); + return $this->getHTMLSelectOptions($filenames); } /** - * Return the absolute path to a new backup file + * Return available volume backups * - * @return string The absolute path to a new backup + * @return string[] A list of filename ready for an HTML select */ - private function getBackupPath($extension): string + public function getVolumeBackupOptions(): array { - $dir = Craft::$app->getPath()->getDbBackupPath(); - $filename = $this->getBackupFilename(); - $path = $dir . DIRECTORY_SEPARATOR . $filename . '.' . $extension; - return mb_strtolower($path); + $filenames = $this->getBackupFilenames("zip"); + return $this->getHTMLSelectOptions($filenames); } /** - * Return a unique filename for new backup files + * Return a unique filename for a backup file * - * Based on https://github.com/craftcms/cms/tree/master/src/db/Connection.php#L203 + * Based on getBackupFilePath(): * - * @return string + * https://github.com/craftcms/cms/tree/master/src/db/Connection.php + * + * @return string The unique backup filename */ - private function getBackupFilename(): string + protected function createBackupFileName(): string { $currentVersion = 'v' . Craft::$app->getVersion(); $systemName = FileHelper::sanitizeFilename(Craft::$app->getInfo()->name, ['asciiOnly' => true]); @@ -144,67 +222,230 @@ private function getBackupFilename(): string } /** - * Return available volume backups + * Return the absolute path to a new backup file * - * @return string[] A list of filename ready for an HTML select + * @param string $extension: The extension to add to the new file + * @return string The absolute path to a new backup */ - public function getVolumeBackupOptions(): array + protected function createBackupPath($extension): string { - $path = Craft::$app->getPath()->getDbBackupPath(); - $filenames = preg_grep('~\.zip$~', scandir($path)); - return $this->encodeSelectOptions($filenames); + $dir = Craft::$app->getPath()->getDbBackupPath(); + $filename = $this->createBackupFileName(); + $path = $dir . DIRECTORY_SEPARATOR . $filename . '.' . $extension; + return mb_strtolower($path); + } + + /** + * Return all backup filenames of a particular extension + * + * @param string $extension: The extension to target + * @return array An array of filenames + */ + protected function getBackupFilenames($extension): array + + { + $dir = Craft::$app->getPath()->getDbBackupPath(); + return preg_grep('~\.' . $extension . '$~', scandir($dir)); + } + + /** + * Return a chronologically sorted array of Backup objects + * + * @param string[] Array of filenames + * @return array[] Array of Backup objects + */ + protected function parseBackupFilenames($filenames): array + { + $backups = []; + + foreach ($filenames as $filename) { + array_push($backups, new Backup($filename)); + } + + uasort($backups, function ($b1, $b2) { + return $b1->datetime <=> $b2->datetime; + }); + + return array_reverse($backups); } /** - * Create an array of human-readable select options from backup files + * Return an array of human-readable select options + * + * @param array $filenames: Array of filenames + * @return array Array of labels mapped to values */ - private function encodeSelectOptions($filenames): array { - $tmp = []; + protected function getHTMLSelectOptions($filenames): array + { + $backups = $this->parseBackupFilenames($filenames); $options = []; - // Regex to capture/match: - // - Site name - // - Environment (optional and captured) - // - Date (required and captured) - // - Random string - // - Version - // - Extension - $regex = '/^(?:[a-zA-Z0-9-]+)\_(?:([a-zA-Z]+)\_)?(\d{6}\_\d{6})\_(?:[a-zA-Z0-9]+)\_(?:[v0-9\.]+)\.(?:\w{2,10})$/'; - - foreach ($filenames as $i=>$filename) { - preg_match($regex, $filename, $matches); - $env = $matches[1]; - $date = $matches[2]; - - $datetime = date_create_from_format('ymd_Gis', $date); - $label = $datetime->format('Y-m-d H:i:s'); - if ($env) { - $label = $label . ' (' . $env . ')'; + foreach ($backups as $i => $backup) { + $options[$i] = [ + "label" => $backup->label, + "value" => $backup->filename + ]; + } + + return $options; + } + + /** + * Pruning involves keeping a minimum number of the most recent backups + * for daily, weekly, monthly and yearly backup periods. The number of + * retained backups is decided by the plugin settings but is usually: + * + * 14 of the most recent daily backups + * 4 of the most recent weekly backups + * 6 of the most recent monthly backups + * 3 of the most recent yearly backups + * + * @param string $extension: The type of backups we are targeting for + * deletion + */ + protected function prune($extension, $dryRun = false): array + { + $filenames = $this->getBackupFilenames($extension); + $backups = $this->parseBackupFilenames($filenames); + $oldBackups = $this->getOldBackups($backups); + + $result = [ + "local" => [], + "remote" => [] + ]; + + if (!$dryRun) { + $result["local"] = $this->deleteLocalBackups($oldBackups); + $result["remote"] = $this->deleteRemoteBackups($oldBackups); + } + + return $result; + } + + /** + * Delete local backups paths + * + * @param array $backups An array of Backup objects + * @return array An array of paths that were deleted + */ + protected function deleteLocalBackups($backups): array + { + $paths = []; + foreach ($backups as $backup) { + $path = $backup->path(); + array_push($paths, $path); + unlink($path); + } + return $paths; + } + + /** + * Find the backups that should be deleted + * + * @param array $backups Array of Backup objects + * @param bool $report Print information to the console + * @return array An array of Backup objects for deletion + */ + protected function getOldBackups($backups, $report = true) + { + foreach ($backups as $backup) { + $backup->delete = True; + } + + $config = [ + "Daily" => [ + "format" => 'Y-m-d', + "limit" => Sync::getInstance()->getSettings()->pruneDailyCount + ], + "Weekly" => [ + "format" => 'Y-W', + "limit" => Sync::getInstance()->getSettings()->pruneWeeklyCount + ], + "Monthly" => [ + "format" => 'Y-m', + "limit" => Sync::getInstance()->getSettings()->pruneMonthlyCount + ], + "Yearly" => [ + "format" => 'Y', + "limit" => Sync::getInstance()->getSettings()->pruneYearlyCount + ] + ]; + + $data = [ + "Daily" => [], + "Weekly" => [], + "Monthly" => [], + "Yearly" => [], + ]; + + $groups = [ + "Daily" => [], + "Weekly" => [], + "Monthly" => [], + "Yearly" => [], + ]; + + // Group all dates by their periods + foreach ($backups as $backup) { + foreach ($config as $period => $settings) { + $key = $backup->datetime->format($settings["format"]); + if (!array_key_exists($key, $groups[$period])) { + $data[$period][$key] = []; + } + array_push($data[$period][$key], $backup); } - array_push($tmp, [$i, $filename, $datetime, $label]); } - uasort($tmp, function($a, $b) { - return $a[2] <=> $b[2]; - }); + // Save relevant backups from each period + foreach ($config as $period => $settings) { + foreach ($data[$period] as $key => $_backups) { + if (count($groups[$period]) >= $settings["limit"]) { + break; + } + $backup = $_backups[0]; + $backup->delete = False; + array_push($groups[$period], $backup); + } + } + + if ($report) { + Craft::debug('Saving:' . PHP_EOL, 'env-sync'); + foreach ($groups as $period => $_backups) { + Craft::debug(" " . $period . " (Most recent " . $config[$period]['limit'] . ')' . PHP_EOL, 'env-sync'); + foreach ($_backups as $backup) { + Craft::debug(" + " . $backup->datetime->format('Y-m-d') . PHP_EOL, 'env-sync'); + } + } - foreach ($tmp as $t) { - $options[$t[0]] = ["label"=>$t[3], "value"=>$t[1]]; + Craft::debug('For Deletion:' . PHP_EOL, 'env-sync'); + foreach ($backups as $backup) { + if ($backup->delete) { + Craft::debug(" - " . $backup->datetime->format('Y-m-d') . PHP_EOL, 'env-sync'); + } + } } - return array_reverse($options); + $oldBackups = []; + foreach ($backups as $backup) { + if ($backup->delete) { + array_push($oldBackups, $backup); + } + } + + return $oldBackups; } /** * Factory method to return appropriate class depending on provider * setting * - * @return $provider class + * @return class The provider */ - public static function create($provider) { + public static function create($provider) + { switch ($provider) { case "s3": return S3Service::class; break; - } + } } } diff --git a/src/services/providers/S3Provider.php b/src/services/providers/S3Provider.php index 5043e81..a8e9a9b 100644 --- a/src/services/providers/S3Provider.php +++ b/src/services/providers/S3Provider.php @@ -1,9 +1,8 @@ pull("sql"); } catch (AwsException $exception) { @@ -31,9 +32,10 @@ public function pullDatabase(): bool { /** * Push local database backups from backup folder to S3 * - * @return bool If process was successful + * @return array An array of paths that were pushed */ - public function pushDatabase(): bool { + public function pushDatabaseBackups(): array + { try { return $this->push("sql"); } catch (AwsException $exception) { @@ -44,9 +46,10 @@ public function pushDatabase(): bool { /** * Pull local volume backups from cloud to local backup folder * - * @return bool If process was successful + * @return array An array of paths that were pulled */ - public function pullVolumes(): bool { + public function pullVolumeBackups(): array + { try { return $this->pull("zip"); } catch (AwsException $exception) { @@ -57,9 +60,10 @@ public function pullVolumes(): bool { /** * Push local volume backups from backup folder to S3 * - * @return bool If process was successful + * @return array An array of paths that were pushed */ - public function pushVolumes(): bool { + public function pushVolumeBackups(): array + { try { return $this->push("zip"); } catch (AwsException $exception) { @@ -68,12 +72,13 @@ public function pushVolumes(): bool { } /** - * Underlying sync with AWS via AWS Cli + * Pull objects from remote S3 bucket to our backup folder * - * @param $extension string The extension to pull from aws - * @return bool If process was successful + * @param string $extension The extension to target on AWS + * @return array An array of paths that were pulled */ - private function pull($extension): bool { + private function pull($extension): array + { $settings = Sync::getInstance()->settings; $s3BucketName = Craft::parseEnv($settings->s3BucketName); $s3BucketPrefix = Craft::parseEnv($settings->s3BucketPrefix); @@ -81,69 +86,113 @@ private function pull($extension): bool { $client = $this->getS3Client(); $backupPath = Craft::$app->getPath()->getDbBackupPath(); + $paths = []; $results = $client->getPaginator('ListObjectsV2', [ 'Bucket' => $s3BucketName, 'Prefix' => $s3BucketPrefix, 'MaxKeys' => 1000 ]); - foreach ($results as $result) { - if ($result['KeyCount'] > 0) { + if ($result['KeyCount'] > 0) { foreach ($result['Contents'] as $object) { $key = $object['Key']; $file_info = pathinfo($key); if ($file_info['extension'] == $extension) { $path = $backupPath . DIRECTORY_SEPARATOR . $file_info['basename']; - if (! file_exists($path)) { + if (!file_exists($path)) { $client->getObject([ 'Bucket' => $s3BucketName, 'Key' => $key, 'SaveAs' => $path ]); + array_push($paths, $path); } else { - Craft::info("Skipping '" . $key . "' as file already exists locally", "env-sync"); + Craft::info("Skipping pull of '" . $key . "' as file already exists locally", "env-sync"); } } else { - Craft::info("Skipping '" . $key . "' as extension doesn't match", "env-sync"); + Craft::info("Skipping pull of '" . $key . "' as extension doesn't match", "env-sync"); } } } } - - return true; + return $paths; } - private function push($extension): bool { - $backupPath = Craft::$app->getPath()->getDbBackupPath(); + /** + * Push all local backups of a particular extension to S3 + * + * @param string $extension The extension to target (sql or zip) + * @return array An array of paths that were pushed successfully + */ + private function push($extension): array + { $settings = Sync::getInstance()->settings; $s3BucketName = Craft::parseEnv($settings->s3BucketName); - $client = $this->getS3Client(); - foreach (glob($backupPath . DIRECTORY_SEPARATOR . '*.' . $extension) as $path) { - $key = $this->getAWSKey($path); + + $filenames = $this->getBackupFilenames($extension); + $backups = $this->parseBackupFilenames($filenames); + $paths = []; + foreach ($backups as $backup) { + $path = $backup->path(); + $key = $this->getAWSKey($backup->filename); $exists = $client->doesObjectExist($s3BucketName, $key); - if (! $exists) { + if (!$exists) { $client->putObject([ 'Bucket' => $s3BucketName, 'Key' => $key, 'SourceFile' => $path ]); + array_push($paths, $path); } else { - Craft::warning("File '" . $key . "' already exists on S3", "craft-sync"); + Craft::warning("Skipping push of '" . $key . "' as file already exists on S3", "craft-sync"); } } + return $paths; + } - return true; + /** + * Delete remote backups + * + * @param array $backups An array of backups to delete + * @return array An array of paths that were deleted + */ + public function deleteRemoteBackups($backups): array + { + try { + $settings = Sync::getInstance()->settings; + $s3BucketName = Craft::parseEnv($settings->s3BucketName); + $client = $this->getS3Client(); + $paths = []; + foreach ($backups as $backup) { + $key = $this->getAWSKey($backup->filename); + $exists = $client->doesObjectExist($s3BucketName, $key); + if ($exists) { + $client->deleteObject([ + 'Bucket' => $s3BucketName, + 'Key' => $key + ]); + array_push($paths, $backup->path()); + } else { + Craft::warning("Could\'nt delete '" . $key . "' as it doesn't exist on S3", "craft-sync"); + } + } + return $paths; + } catch (AwsException $exception) { + throw new ProviderException($this->createErrorMessage($exception)); + } } - + /** + * Return the AWS key, including any prefix folders * + * @param string $filename The filename for the key + * @return string The prefixed key */ - private function getAWSKey($path): string { + private function getAWSKey($filename): string + { $settings = Sync::getInstance()->settings; $s3BucketPrefix = Craft::parseEnv($settings->s3BucketPrefix); - - $filename = basename($path); if ($s3BucketPrefix) { return $s3BucketPrefix . DIRECTORY_SEPARATOR . $filename; } @@ -151,9 +200,12 @@ private function getAWSKey($path): string { } /** + * Return a useable S3 client object * + * @return S3Client The S3 client object */ - private function getS3Client() { + private function getS3Client(): S3Client + { $settings = Sync::getInstance()->settings; $s3AccessKey = Craft::parseEnv($settings->s3AccessKey); $s3SecretKey = Craft::parseEnv($settings->s3SecretKey); @@ -168,7 +220,14 @@ private function getS3Client() { ]); } - private function createErrorMessage($exception) { + /** + * Create a more user-friendly error message from AWS + * + * @param AwsException $exception The exception + * @return string An client-friendly string + */ + private function createErrorMessage($exception) + { Craft::$app->getErrorHandler()->logException($exception); $awsMessage = $exception->getAwsErrorMessage(); $message = "AWS Error"; diff --git a/src/templates/settings.html b/src/templates/settings.twig similarity index 61% rename from src/templates/settings.html rename to src/templates/settings.twig index 383acc7..0d5c631 100644 --- a/src/templates/settings.html +++ b/src/templates/settings.twig @@ -97,10 +97,68 @@ {{ forms.lightswitchField({ label: "Use Queue"|t('env-sync'), - instructions: "Whether or not to use the Craft 3 queue"|t('env-sync'), + instructions: "Use the built-in Craft queue for performing backup operations"|t('env-sync'), name: 'useQueue', id: 'useQueue', on: settings.useQueue, errors: settings.getErrors('useQueue'), warning: configWarning('useQueue', 'env-sync') -}) }} \ No newline at end of file +}) }} + +


+ +{{ forms.lightswitchField({ + label: "Prune Backups"|t('env-sync'), + instructions: "Delete old backups when new backup created"|t('env-sync'), + name: 'prune', + id: 'prune', + on: settings.prune, + errors: settings.getErrors('prune'), + warning: configWarning('prune', 'env-sync') +}) }} + +
+ {{ forms.textField({ + label: "Daily backups"|t('env-sync'), + type: "number", + instructions: "The number of daily backups to keep"|t('env-sync'), + name: 'pruneDailyCount', + id: 'pruneDailyCount', + value: settings.pruneDailyCount, + errors: settings.getErrors('pruneDailyCount'), + warning: configWarning('pruneDailyCount', 'env-sync') + }) }} + + {{ forms.textField({ + label: "Weekly backups"|t('env-sync'), + type: "number", + instructions: "The number of weekly backups to keep"|t('env-sync'), + name: 'pruneWeeklyCount', + id: 'pruneWeeklyCount', + value: settings.pruneWeeklyCount, + errors: settings.getErrors('pruneWeeklyCount'), + warning: configWarning('pruneWeeklyCount', 'env-sync') + }) }} + + {{ forms.textField({ + label: "Monthly backups"|t('env-sync'), + type: "number", + instructions: "The number of monthly backups to keep"|t('env-sync'), + name: 'pruneMonthlyCount', + id: 'pruneMonthlyCount', + value: settings.pruneMonthlyCount, + errors: settings.getErrors('pruneMonthlyCount'), + warning: configWarning('pruneMonthlyCount', 'env-sync') + }) }} + + {{ forms.textField({ + label: "Yearly backups"|t('env-sync'), + type: "number", + instructions: "The number of yearly backups to keep"|t('env-sync'), + name: 'pruneYearlyCount', + id: 'pruneYearlyCount', + value: settings.pruneYearlyCount, + errors: settings.getErrors('pruneYearlyCount'), + warning: configWarning('pruneYearlyCount', 'env-sync') + }) }} +
diff --git a/src/utilities/SyncUtility.php b/src/utilities/SyncUtility.php index 3de8b5f..cd1a133 100644 --- a/src/utilities/SyncUtility.php +++ b/src/utilities/SyncUtility.php @@ -1,57 +1,56 @@ getBasePath() . DIRECTORY_SEPARATOR . 'utility-icon.svg'; - } + public static function iconPath() + { + return Sync::getInstance()->getBasePath() . DIRECTORY_SEPARATOR . 'utility-icon.svg'; + } - public static function contentHtml(): string - { - $view = Craft::$app->getView(); - $view->registerAssetBundle(SyncAsset::class); - $forms = [ - ['create-database-backup', true], - ['create-volumes-backup', true], - ['push-database', false], - ['push-volumes', false], - ['pull-database', true], - ['pull-volumes', true], - ['restore-database-backup', false], - ['restore-volumes-backup', false] - ]; - foreach ($forms as $form) { - $view->registerJs("new Craft.SyncUtility('" . $form[0] . "', " . $form[1] . ");"); - } - - $dbBackupOptions = Sync::getInstance()->sync->getDbBackupOptions(); - $volumeBackupOptions = Sync::getInstance()->sync->getVolumeBackupOptions(); - - return $view->renderTemplate('env-sync/_components/utilities/sync', [ - "settingConfigured"=>Sync::getInstance()->getSettings()->isConfigured(), - "dbBackupOptions"=>$dbBackupOptions, - "volumes"=> Craft::$app->getVolumes()->getAllVolumes(), - "volumeBackupOptions"=>$volumeBackupOptions - ]); + public static function contentHtml(): string + { + $view = Craft::$app->getView(); + $view->registerAssetBundle(SyncUtilityAsset::class); + $forms = [ + ['create-database-backup', true], + ['create-volumes-backup', true], + ['push-database', false], + ['push-volumes', false], + ['pull-database', true], + ['pull-volumes', true], + ['restore-database-backup', false], + ['restore-volumes-backup', false] + ]; + foreach ($forms as $form) { + $view->registerJs("new Craft.SyncUtility('" . $form[0] . "', " . $form[1] . ");"); } + + $dbBackupOptions = Sync::getInstance()->sync->getDbBackupOptions(); + $volumeBackupOptions = Sync::getInstance()->sync->getVolumeBackupOptions(); + + return $view->renderTemplate('env-sync/_components/utilities/sync', [ + "settingConfigured" => Sync::getInstance()->getSettings()->isConfigured(), + "dbBackupOptions" => $dbBackupOptions, + "volumes" => Craft::$app->getVolumes()->getAllVolumes(), + "volumeBackupOptions" => $volumeBackupOptions + ]); } -?> \ No newline at end of file +}